这个MySQL语法中的错误在哪里?

时间:2011-04-16 21:27:30

标签: mysql syntax coldfusion

我已经坐了几个小时试图找到ColdFusion告诉我的MySQL语法问题,但我看不到它。这是我的疑问:

SELECT *
FROM message_table
WHERE useridto = #session.userid# AND read = 0

我得到的错误告诉我:

  

“您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   正确的语法在'read ='0''附近使用   在第4行“

我已经研究过MySQL,检查了我已经完成的具有IDENTICAL语法和工作的查询。我错过了一些简单的东西吗?

我应该提到#session.userid#输出正确,所以不是那样。

2 个答案:

答案 0 :(得分:6)

read是MySQL中的保留关键字:

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

这也可能导致问题。我会更改您的列名或执行以下操作:

SELECT *
FROM message_table
WHERE useridto = #session.userid# AND `read` = 0
  

可以引用标识符或   不带引号的。如果标识符包含   特殊字符或是保留的   一句话,你必须随时引用它   参考它   标识符引号字符是反引号(“`”):

per:http://dev.mysql.com/doc/refman/5.5/en/identifiers.html

答案 1 :(得分:3)

read是一个MySQL关键字。尝试用反引号(`)包围它:

SELECT * FROM message_table WHERE useridto = 5 AND `read` = 0