我有一个简单的SQL查询,它一直抛出一个SQL语法错误。看起来是这样的:
$sql = "SELECT COUNT(*) AS TOTAL FROM PRODUCT WHERE ID_PRODUCT = ".$id;
$result = mysql_query($sql) or die(mysql_error()); 抛出:
您的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以获得在第1行“ID_PRODUCT =1”附近使用的正确语法。
我不明白怎么回事。当然,如果我在phpMyAdmin中直接尝试查询,它的工作就没有问题。
它返回与SELECT *完全相同的错误。
编辑:ID_PRODUCT是一个外键..。
Update:在用$sql字符串WHERE ID_PRODUCT = 2中的静态值替换$id变量以及用引号保护名称时,也会出现相同的错误。
发布于 2010-02-22 13:18:55
试着用手完全重新输入$sql,您可能会意外地在其中有一个不可见的扩展字符(例如,一个不间断的空间,而不是一个常规的空间,等等)。
发布于 2010-02-22 12:54:22
如果ID_PRODUCT列是varchar,则需要在where子句的值周围放置单引号。可能是这样的,如果没有关于您的模式的信息,就无法判断。
更新:不确定。显然,下一步是打印生成的SQL并尝试手动运行它,希望问题会出现,并且您将能够排除PHP作为问题的来源。
发布于 2010-02-22 13:07:01
尝试引用您的表、列和标识符名称。考虑到案件的敏感性。表、列或标识符不要使用全大写名称。
编辑:主要是为了可读性,但也可能防止与保留关键字的冲突。
我的想法是:
SELECT COUNT(*) AS "total" FROM "Product" WHERE "id_Product" = 1
请注意,默认情况下,MySQL使用非标准回勾字符(`)引用这些字符。(虽然它们没有出现在这里,所以我也可以使用双引号。)
https://stackoverflow.com/questions/2310914
复制相似问题