在MySQL中,"导致错误,"工作正常.为什么?

jas*_*son 0 mysql sql quotes

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

$query = "SELECT * FROM 'users' WHERE 'username' = 'admin'";#does not work
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*uis 7

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

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

  1. 'users'指定字符串,而不是对表的引用users,并FROM期望表引用.
  2. 'username' = 'admin'进行字符串比较,字符串username永远不等于字符串admin.

  • +1:SQL通常认为单引号内的任何内容都是文本,而不是列名.MySQL使用反引号(我不知道其他人),但它们[只有当有人做出糟糕的决定使用MySQL中的保留字时才有必要逃避](http://dev.mysql.com/doc) /refman/5.0/en/reserved-words.html) (3认同)