我有一个简单的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
中的静态值以及用引号保护名称时,我也会遇到同样的错误。
答案 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使用非标准反引号字符(`)来引用这些字符。 (虽然它们没有正确显示在这里所以我不妨使用双引号。)