2014-04-17 188 views
0

我正在制作一个电影网站,你可以通过数据库搜索找到想要的标题,但我有一个问题... 如何使用PDO搜索数据库?我有这样的事情:搜索MySQL数据库

$search=$_GET['search']; 
$search='%'.$search.'%'; 
$db = new mysqli($DBhost, $DBuser, $DBpassword, $DBdatabase); 
$sql="SELECT id, title, year, front_image, description FROM a358_filmovi WHERE title LIKE ?"; 
$sl=$db->prepare($sql); 
$sl->bind_param('s',$search); 
$sl->execute(); 
$sl->bind_result($id, $title, $year, $front_image, $description); 
while($sl->fetch()){ 
?> 
    DATA OUTPUT 
<?php 
} 

而问题是,我有记录哈利·波特与死亡圣器第1部分:如果我搜索哈利波特它会显示该影片作为一个结果,但如果我搜索Harry potter,它不会显示任何内容(空白结果)。

这只是一个示例电影,它不适用于数据库中的任何电影。

如何编辑此代码以匹配搜索输入的每个结果,大写还是小写?



在此先感谢。

+2

http://stackoverflow.com/questions/8083455/mysql-like-case-sensitive –

+0

@Devon可能的重复井不是站在那里'串','我'为'整数'等。? –

+0

我的错,我误解了你以后的样子。 – Devon

回答

1

如果你问的是如何在PDO中做到这一点,它是非常相似。你可以在execute()函数中绑定param来避免使用bindParam()。

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password'); 
$sql="SELECT id, title, year, front_image, description FROM a358_filmovi WHERE title LIKE ?"; 
$sl=$db->prepare($sql); 
$sl->execute(array('%'.$_GET['search'].'%'); 

应该工作。

而不是使用SQL或PHP来执行不区分大小写的搜索,最好将模式中的列编码更改为_ci(ci表示不区分大小写)。

+0

这不会是区分大小写吗? –

+0

有什么区别? –

+0

我已经更新了它,详细说明了有关PDO和列编码的更多信息。 – Devon