在MySQL中,“导致错误,”工作正常。为什么?

时间:2010-09-07 19:45:28

标签: sql mysql quotes

$query = "SELECT * FROM `users` WHERE `username` = 'admin'";#works

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

这是另一个怪癖,我将不得不习惯,或者是有趣的事情吗?

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

使用'

引用列名称不是合法语法

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

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

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

答案 2 :(得分:0)

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