将名称插入客户数据库时,我使用MySQLi函数real_escape_string来清理数据。现在,带有单引号的示例条目如下所示:
Baker\'s Pharmacy
但是当我尝试使用如下查询查询名称时:
$search = "Baker's Pharmacy";
$searchName = $db->real_escape_string($search);
$query = "SELECT Name FROM Customers WHERE Name = '$searchName'";
我没有返回匹配,搜索santised单引号的正确方法是什么?
非常感谢任何帮助!
答案 0 :(得分:3)
有两个错误的假设需要清理。
*escape_string
函数什么都不消毒。这只是一个令人讨厌的谣言,PHP人们最好最终摆脱它。而不是"消毒"您必须为插入和选择查询使用mysqli预处理语句,并且您将看到没有与引号相关的单个问题(除非有magic_quotes或其自酿的等价物在附近)。