Php MySQL查询引号等

Php MySQL查询引号等,php,mysql,sql,select,Php,Mysql,Sql,Select,可能重复: 问题1 为什么这样做有效 "SELECT `id` FROM `table` WHERE x= '".$y."'" 但不是这个 "SELECT `id` FROM `table` WHERE 'x' = '".$y."'" ^ ^ Notice the extra single quotes 问题2 在'id`(用奇怪的引号)的基础上做id更好吗? 还是因

可能重复:

问题1

为什么这样做有效

"SELECT `id` FROM `table` WHERE x= '".$y."'"
但不是这个

"SELECT `id` FROM `table` WHERE 'x' = '".$y."'"
                                ^ ^
                              Notice the extra single quotes
问题2'id`(用奇怪的引号)的基础上做id更好吗?
还是因为双引号使其解释为变量?

因为服务器将
x
读取为一个值,因为它是用
单引号包装的
backtick
转义查询中使用的保留关键字,通常用于环绕列名和表名

在你的询问中

SELECT `id` FROM `table` WHERE 'x' = '$y'
x
没有列,而是字符串值

对于问题2,您可以消除
id
周围的反勾号,因为它不是
保留关键字
,下面是MySQL中保留关键字的完整列表

作为旁注,查询在
SQL注入时容易受到攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,可以避免在值周围使用单引号


真正需要的是一些。您不应该直接在查询中插入用户数据。使用占位符,否则可能会造成严重后果。感谢您的建议:)