$query = "SELECT * FROM `users` WHERE `username` = 'admin'";#works
$query = "SELECT * FROM 'users' WHERE 'username' = 'admin'";#does not work
这是另一个怪癖,我将不得不习惯,或者是有趣的事情吗?
答案 0 :(得分:7)
单引号('
)和双引号("
)用于指定MySQL中的字符串。反引号(`
)用于列/表引用。
您的第二个查询将失败有两个原因:
'users'
指定字符串,而不是对表users
的引用,而FROM
需要table reference。'username' = 'admin'
进行字符串比较,字符串username
永远不会等于字符串admin
。答案 1 :(得分:0)
使用'
引用列名称不是合法语法`(反引号)用于引用标识符。
由于您的所有列都不是保留关键字,因此也可以使用:
"SELECT * FROM users WHERE username = 'admin'"
答案 2 :(得分:0)
在MySQL中,默认情况下,单引号('
)和双引号("
)是文字字符串分隔符,而反引号(`
)是标识符引号。如果将SQL模式设置为包含ANSI_QUOTES,则双引号也将是标识符引号而不是文字字符串分隔符。