MySQL Query Quotes等

Wul*_*ulf 3 php mysql sql select

可能重复:
MySQL - 何时使用单引号,双引号和反引号?

问题1

为什么这样做?

"SELECT `id` FROM `table` WHERE x= '".$y."'"
Run Code Online (Sandbox Code Playgroud)

但不是吗?

"SELECT `id` FROM `table` WHERE 'x' = '".$y."'"
                                ^ ^
                              Notice the extra single quotes
Run Code Online (Sandbox Code Playgroud)

问题2对于`id`(带有奇怪的引号)id 更好吗?或者是因为双引号使它被解释为变量?

Joh*_*Woo 6

因为服务器读取x为包装的值single quote.backtick转义查询中使用的保留关键字,通常用于包装columnNamestableNames.

在您的查询中,

SELECT `id` FROM `table` WHERE 'x' = '$y'
Run Code Online (Sandbox Code Playgroud)

x没有一列,但一个字符串值.

对于问题2,你可以消除那些反引号,id因为它不是a Reserved Keyword,这里是MySQL中保留关键字的完整列表

作为旁注,查询易受攻击SQL Injection.请查看下面的文章,了解如何防止它.通过使用PreparedStatements,您可以摆脱使用值周围的单引号.