【问题标题】:In MySQL, ' results in error, ` works fine. why?在 MySQL 中,' 导致错误,` 工作正常。为什么?
【发布时间】:2011-04-09 09:26:24
【问题描述】:
$query = "SELECT * FROM `users` WHERE `username` = 'admin'";#works

$query = "SELECT * FROM 'users' WHERE 'username' = 'admin'";#does not work

这是我必须习惯的另一个怪癖,还是发生了什么有趣的事情?

【问题讨论】:

    标签: sql mysql quotes


    【解决方案1】:

    单引号 (') 和双引号 (") 用于在 MySQL 中指定字符串。反引号 (`) 用于列/表引用。

    您的第二个查询将失败,原因有两个:

    1. 'users' 指定一个字符串,而不是对表 users 的引用,FROM 需要一个 table reference
    2. 'username' = 'admin' 进行字符串比较,字符串username 永远不会等于字符串admin

    【讨论】:

    【解决方案2】:

    用'引用列名是不合法的语法

    `(反引号)用于引用标识符。

    由于您的所有列都不是保留关键字,因此这也可以:

     "SELECT * FROM users WHERE username = 'admin'"
    

    【讨论】:

      【解决方案3】:

      在 MySQL 中,默认情况下,单引号 (') 和双引号 (") 是文字字符串分隔符,而反引号 (`) 是标识符引号。如果您将 SQL 模式设置为包含 ANSI_QUOTES,则双引号也将是标识符引号,而不是文字字符串分隔符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-11
        • 2016-01-23
        • 2012-04-07
        • 2013-12-08
        • 1970-01-01
        • 2020-01-13
        • 1970-01-01
        • 2018-07-26
        相关资源
        最近更新 更多