【问题标题】:Issues with MySQL and quotation marksMySQL 和引号的问题
【发布时间】:2014-08-09 00:59:12
【问题描述】:

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

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/) 作为我的数据库框架。

【问题讨论】:

  • 问题已解决。我修复的框架存在问题!
  • 你能解释一下你是如何解决这个问题的吗?
  • 是的,请看下面我接受的答案。

标签: mysql


【解决方案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 选项,并使用双引号作为标识符转义字符,就像您原来的语句一样。

【讨论】:

    【解决方案2】:

    字段需要使用反引号进行转义,而不是双引号:

    SELECT * FROM `orders` WHERE `printer_id` = 'AC001' AND `sent` = '0'
    

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 2018-10-25
      • 2019-05-05
      • 2018-05-25
      相关资源
      最近更新 更多