0

我在从 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 .
4

2 回答 2

3

使用Double quotes所以你不需要任何单引号的转义。

$sql = "SELECT  Name, Des, Url, about, date
        FROM    data 
        where   name = '$name'";

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-04T13:52:32.707 回答
0

使用 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 );
于 2013-02-04T13:54:09.493 回答