在MySQL数据库中查询已清理的单引号。

时间:2016-08-30 12:49:56

标签: php mysql mysqli

将名称插入客户数据库时,我使用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单引号的正确方法是什么?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

有两个错误的假设需要清理。

  1. 无论*escape_string函数什么都不消毒。这只是一个令人讨厌的谣言,PHP人们最好最终摆脱它。
  2. 无论如何,通过使用此函数,您将数据格式化为数据库而不是数据库,而仅用于SQL查询。所有斜杠都被数据库剥离,数据按原样存储。
  3. 而不是"消毒"您必须为插入和选择查询使用mysqli预处理语句,并且您将看到没有与引号相关的单个问题(除非有magic_quotes或其自酿的等价物在附近)。