【发布时间】:2016-08-30 12:49:55
【问题描述】:
将姓名插入客户数据库时,我使用 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'";
我没有返回任何匹配项,搜索经过处理的单引号的正确方法是什么?
非常感谢任何帮助!
【问题讨论】:
-
尝试
$search = "Baker\\\'s Pharmacy";,不要使用real_escape_string -
正确的方法是存储实际数据而不是数据的修改版本,然后搜索您要查找的实际数据。您应该使用查询参数将输入视为值,而不是在将其作为代码执行之前手动清理输入。
-
应该是
Baker's Pharmacy,不带斜线。您似乎两次转义了数据。 -
@你的常识好点!
-
只有一个 real_escape_string 可以在数据输入上运行,还有什么可以净化输入的吗?魔术引号肯定是关闭的。