简单查询抛出SQL语法错误

时间:2010-02-22 12:50:14

标签: php sql mysql

我有一个简单的SQL查询,不断抛出SQL语法错误。它看起来像这样:

$sql = "SELECT COUNT(*) AS TOTAL FROM PRODUCT WHERE ID_PRODUCT = ".$id;
$result = mysql_query($sql) or die(mysql_error()); 

引发:

  

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

我不明白发生了什么。当然,如果我直接在phpMyAdmin中尝试查询,它没有问题。

它返回与SELECT *

完全相同的错误

修改:ID_PRODUCT是外键......

更新:将$ id变量替换为$ sql字符串WHERE ID_PRODUCT = 2中的静态值以及用引号保护名称时,我也会遇到同样的错误。

3 个答案:

答案 0 :(得分:3)

如果ID_PRODUCT列是varchar,则需要在where子句中的值周围加上单引号。可能是这样的,没有关于你的架构的信息就无法分辨。


更新:不确定。明显的下一步是打印出生成的SQL并尝试手动运行它,希望问题能够显现出来,并且您将能够排除PHP作为问题的根源。

答案 1 :(得分:2)

尝试用手完全重新输入$sql行,你可能会意外地在那里有一个不可见的扩展字符(例如不间断的空格而不是常规空格等)。

答案 2 :(得分:0)

尝试引用您的表,列和标识符名称。区分大小写。不要对表,列或标识符使用FULL-CAPITAL名称。

编辑:主要是为了提高可读性,但也可能会阻止与保留关键字的冲突。

我正在思考:

SELECT COUNT(*) AS "total" FROM "Product" WHERE "id_Product" = 1

请注意,默认情况下,MySQL使用非标准反引号字符(`)来引用这些字符。 (虽然它们没有正确显示在这里所以我不妨使用双引号。)