php& mysql搜索查询转义

时间:2015-05-01 16:14:49

标签: php mysql

我有一个电影数据库网站,我的搜索问题很小。 让我们说保存在数据库中的电影名称是

  

明确:科学论派和信仰监狱

正如您在标题中看到的那样:

当我的用户搜索Going Clear Scientology and the Prison of Belief时,他们没有得到任何结果,如果电影标题有'则相同,这是我的搜索查询:

SELECT * FROM movie WHERE title LIKE '%$search%'

我该如何解决?

2 个答案:

答案 0 :(得分:0)

尝试使用php插入数据库时​​,请记住两件事。

首先,当你将数据插入数据库时​​,例如电影名称“Going Clear:Scientology and the Prison of Belief”,修剪掉额外的字符串,如:。这对你以后很有帮助。

其次,与第一个类似,当您从用户那里获取输入消毒时。可能有像',$,\,?这样的字符串等不相关的。完成后,您可以在数据库中进行查询搜索。

我猜你的代码还可以。

select * from movie where title like 'Going%';

当我在我的数据库中检查时,上述查询对我有用。查看您的搜索变量是否正确初始化。

答案 1 :(得分:0)

您需要转义字符串中的特殊字符才能在SQL语句中使用。转义特殊字符后,始终将这些类型的值存储到数据库中,并在转义特殊字符后将搜索词传递给查询。

为此你必须使用

<强> mysql_real_escape_string()

<强>例如

 $search = "Going Clear: Scientology and the Prison of Belief";
 $search = mysql_real_escape_string($search);
 $query= "SELECT * FROM movie WHERE title LIKE '%$search%'";

你可以在这里阅读

 http://php.net/manual/en/function.mysql-real-escape-string.php
相关问题