我有这个非常简单的查询:
SELECT * FROM "orders" WHERE "printer_id" = 'AC001' AND "sent" = '0'
它会抛出以下错误:
#1064 - 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 '"orders" WHERE "printer_id" = 'AC001' AND "sent" = '0' at line 1
删除""从列名称使它工作!我使用Medoo(http://medoo.in/)作为我的数据库框架,如果这有帮助的话。
答案 0 :(得分:1)
字段需要使用反引号进行转义,而不是双引号:
SELECT * FROM `orders` WHERE `printer_id` = 'AC001' AND `sent` = '0'
答案 1 :(得分:1)
仅当SQL_MODE
设置包含ANSI_QUOTES
时才会使用标识符旁边的双引号。
默认标识符引号字符是反引号字符。
MySQL正在返回一个语法错误,因为它将"orders"
视为字符串文字,并且它需要一个标识符(表名)。
其中任何一个都可以解决问题:
保留标识符不加引号:
SELECT * FROM orders WHERE printer_id = 'AC001' AND sent = '0'
使用反引号括起标识符
SELECT * FROM `orders` WHERE `printer_id` = 'AC001' AND `sent` = '0'
或者(我不推荐这个,但这是另一种方法......
将SQL_MODE
的设置更改为包含ANSI_QUOTES
选项,并使用双引号作为标识符转义字符,就像在原始语句中一样。