2014-02-25 2 views
1

SO을 검토 한 후 준비된 문을 사용하는 데 문제가 있습니다.대체하려고합니다 : 쿼리가 실행될 때 검색하지만 바뀌지 않는 것으로 보입니다.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

그리고 여기 내 쿼리 문은 다음과 같습니다 :

나는 내 DB 연결에 다음을 추가 한 당신은 LIKE에서 볼 수 있듯이

$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id 
    FROM schedules 
    INNER JOIN users 
    ON schedules.admin_id=users.user_id 
    WHERE schedules.schedule_name 
    LIKE '%:search%' 
    ORDER BY schedules.schedule_name"; 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(array('search' => $search_string)); 
    $search_results = $stmt->fetchAll(); 

, 나는 대체하기 위해 노력하고 있어요 : 검색 쿼리가 실행되었지만 대체되지 않는 것 같습니다.

+0

당신이 원한 것과 같은 막연한 제목은 그들이 찾고있는 것과 아무런 관련이없는 질문을 살펴 봐야하는 Google 검색 자에게는 골치 거리입니다. –

+0

좋아, 다음에 그걸 기억할거야. – Shane

+0

다음 번에 관한 것은 아닙니다. 귀하의 질문에 대한 답을 찾는 것입니다. 현재의 것. –

답변

0

매개 변수화 된 쿼리를 수행 할 때, 단순히 문자열을 대체하지, 당신이 singlequotes 그것을 둘러싸고하지 않습니다

$query = "SELECT schedules.schedule_name, users.name, schedules.schedule_id 
    FROM schedules 
    INNER JOIN users 
    ON schedules.admin_id=users.user_id 
    WHERE schedules.schedule_name 
    LIKE :search 
    ORDER BY schedules.schedule_name"; 

하지만이 용어를 오른쪽으로 주위 % 와일드 카드를 갖고 싶어? 삽입 할 때 추가하십시오 :

$result = $stmt->execute(array('search' => '%' . $search_string . '%')); 
관련 문제