可能重复:
MySQL - when to use single quotes, double quotes, and backticks?
问题1
为什么这样做?
"SELECT `id` FROM `table` WHERE x= '".$y."'"
但不是吗?
"SELECT `id` FROM `table` WHERE 'x' = '".$y."'"
^ ^
Notice the extra single quotes
问题2 对`id` (带有奇怪的引号) id 更好吗? 或者是因为双引号使它被解释为变量?
答案 0 :(得分:6)
因为服务器将x
读作值,因为它包含single quote
。 backtick
转义查询中使用的保留关键字,通常用于包围 columnNames 和 tableNames 。
,
SELECT `id` FROM `table` WHERE 'x' = '$y'
x
不是列而是字符串值。
,您可以消除id
周围的反引号,因为它不是Reserved Keyword
,这里是MySQL中保留关键字的完整列表
作为旁注,查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。