MySQL和引号的问题

时间:2014-08-09 00:59:12

标签: mysql

我有这个非常简单的查询:

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/)作为我的数据库框架,如果这有帮助的话。

2 个答案:

答案 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选项,并使用双引号作为标识符转义字符,就像在原始语句中一样。