我有一个电影数据库网站,我的搜索问题很小。 让我们说保存在数据库中的电影名称是
明确:科学论派和信仰监狱
正如您在标题中看到的那样:
。
当我的用户搜索Going Clear Scientology and the Prison of Belief
时,他们没有得到任何结果,如果电影标题有'
则相同,这是我的搜索查询:
SELECT * FROM movie WHERE title LIKE '%$search%'
我该如何解决?
答案 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