MySQL Query Quotes等

时间:2012-12-25 04:05:24

标签: php mysql sql select

  

可能重复:
  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 更好吗? 或者是因为双引号使它被解释为变量?

1 个答案:

答案 0 :(得分:6)

因为服务器将x读作值,因为它包含single quotebacktick转义查询中使用的保留关键字,通常用于包围 columnNames tableNames

在您的查询中

SELECT `id` FROM `table` WHERE 'x' = '$y'

x 不是列而是字符串值。

问题2的

,您可以消除id周围的反引号,因为它不是Reserved Keyword,这里是MySQL中保留关键字的完整列表

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