0

下面的PHP代码报错代码:

$id = $_SESSION['sno'];
$q = mysql_query("select * from messages where seen=0 and to=$id");
if(!$q){die("critical failure: ".mysql_error());}

报告的错误是:

critical failure: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to=1' at line 1

'to=1' 表明 $_SESSION['sno'] 设置为 1

4

3 回答 3

2

这是因为您使用的是mysql reserved keyword

$q = mysql_query("select * from messages where seen=0 and `to`=$id");

TO是保留关键字,用反引号`括起来以避免错误

由于不推荐使用 side nmysql_*函数,最好切换到PDOmysqli使用准备好的语句以避免任何风险mysql injections,请在此处了解更多信息如何防止 PHP 中的 SQL 注入?

于 2013-06-16T14:27:02.923 回答
2

to是保留关键字,使用引号标识符对其进行转义。

mysql_query("select * from messages where `seen`=0 and `to`=$id"); 
于 2013-06-16T14:28:09.503 回答
0

您必须使用 ` 符号来表示类似的单词,因为这是 My SQL 的关键字。

所以你的查询看起来像

$q = mysql_query("select * from messages where seen=0 and `to`=$id");
于 2013-06-16T14:27:46.417 回答