我在从SQL获取数据时遇到了一些问题。
当我使用以下语句时,它运行良好
$sql = 'SELECT `Name`, `Des`, `Url`, `about`, `date` FROM `data` where name = ''facebook''';
$retval = mysql_query( $sql, $conn );
当我使用相同的参数名称时,我面临一些问题,我使用的代码是
$name = $_GET['name'];
$sql = 'SELECT `Name`, `Des`, `Url`, `about`, `date` FROM `data` where name = ''$name'';
$retval = mysql_query( $sql, $conn );
我还尝试了连接名称,如''facebook''
$name1 = "''".$name . " ''"; but it is also not working .
使用Double quotes
,这样就不需要任何单引号转义。
$sql = "SELECT Name, Des, Url, about, date
FROM data
where name = '$name'";
附带说明一下,如果变量的值(s)来自外部,那么查询就容易受到SQL Injection
的攻击。请看下面的文章来了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号的情况。
- 如何防止PHP中的SQL注入
使用Mysqli而不是Mysql。
查询解决方案:
$name = $_GET['name'];
$sql = "SELECT Name, Des, Url, about, date FROM data where name = '".mysql_real_escape_string($name)."'";
$retval = mysql_query( $sql, $conn );