$NumPMs = mysql_query("SELECT * FROM messages WHERE to_user='$name' AND read='0'") or die (mysql_error());
$numofpms = mysql_num_rows($NumPMS);
我收到此错误:
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 'read='0'' at line 1
没有意义。它应该工作。
帮助将不胜感激!
编辑:
我将查询更改为:$ NumPMs = mysql_query(“SELECT * FROM messages WHERE to_user
='$ name'AND read
='0'”)或die(mysql_error()) ;
有效。虽然,我的mysql_num_rows也发出错误:警告:mysql_num_rows()期望参数1为资源,在第78行的/home/recatio2/public_html/Main.php中给出null
请帮忙。
答案 0 :(得分:2)
在将其添加到SQL之前,您应该转义字段名称和$ name。
$NumPMs = mysql_query("SELECT * FROM `messages` WHERE `to_user`='". mysql_real_escape_string($name)."' AND `read`='0'") or die (mysql_error());
答案 1 :(得分:2)
read
是MySQL中的保留关键字。您可以使用反引号转义所有字段名称:
$NumPMs = mysql_query("SELECT * FROM messages WHERE `to_user`='$name' AND `read`='0'") or die (mysql_error());
答案 2 :(得分:1)
READ是一个mysql_reserved字;您可以在以下位置查看列表: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
一种解决方案是用反引号来逃避它:
SELECT * FROM messages WHERE to_user='$name' AND `read`='0'
另一种方法是将字段重命名为其他内容 - 对列或表名使用保留字是不好的做法。
答案 3 :(得分:0)
$NumPMs = mysql_query("SELECT * FROM messages m WHERE m.to_user='$name' AND m.read='0'")
使用表的别名以避免与保留的MySQL关键字冲突。
使用别名使其明确清楚从哪个表引用哪些列也是一个好主意。一旦您的查询变得更加复杂并涉及更多表格,您将看到这样做的好处。