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,可以避免在值周围使用单引号
真正需要的是一些。您不应该直接在查询中插入用户数据。使用占位符,否则可能会造成严重后果。感谢您的建议:)