2014-04-17 2 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 도공을 검색하면 아무 것도 표시되지 않습니다 (공백 결과).

이것은 영화의 예이며 데이터베이스의 어떤 영화에서도 작동하지 않습니다.

검색 입력, 대문자 또는 소문자의 모든 결과와 일치하도록이 코드를 편집하려면 어떻게해야합니까?



미리 감사드립니다.

+2

가능한 복제본은 http://stackoverflow.com/questions/8083455/mysql-like-case-sensitive입니다. –

+0

@Devon Well은 'string', 'i'는 'integer'등으로 서 있지 않습니다. .? –

+0

내 잘못으로, 나는 네가 한 일을 오해했다. – Devon

답변

1

PDO에서이 작업을 수행하는 방법을 묻는다면 상당히 유사합니다. bindParam()을 사용하지 않으려면 execute() 함수에서 param을 바인딩 할 수 있습니다.

$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

관련 문제