2014-12-09 3 views
1

이것은 내 코드입니다. 이 SQL 쿼리는 phpmyadmin에서 제대로 작동하지만 원하는대로 2 개의 호텔을 반환하지만 PHP 코드에서는 모든 호텔을 반환합니다. 왜 이것이 작동하지 않습니까?LIKE WildCard가있는 SQL 코드가 제대로 작동하지 않습니다.

$search_text = "%". $search_text ."%"; 

    $query = "SELECT name,country,province,town FROM Hotel WHERE country LIKE ? OR province LIKE ? OR town LIKE ? OR name LIKE ? ORDER BY name DESC"; 

    $stmt = Database::$connection->prepare($query); 

    $stmt -> bind_param('ssss',$search_text , $search_text, $search_text, $search_text); 
    $stmt -> execute(); 
    $result = $stmt -> get_result(); 

    $searched = null; 

    $count = 0; 
    while($row = $result -> fetch_array(MYSQLI_NUM)){ 
     $searched[$count][0] = $row[0]; 
     $searched[$count][1] = $row[1]; 
     $searched[$count][2] = $row[2]; 
     $searched[$count][3] = $row[3]; 
     $count++; 
    } 
    $stmt-> close(); 
    return $searched; 
+0

이 첫 번째 매개 변수는 무엇입니까 'ssss'입니까? 그리고 왜 5 params하지만 쿼리에서 단 4 자리 표시 자? – RobP

+1

@RobP http://php.net/manual/en/mysqli-stmt.bind-param.php 4 개의 문자열을 나타냅니다. – DickieBoy

+0

@RobP 4 개의 매개 변수를 계산합니까? ssss는 [Docs] (http://php.net/manual/en/mysqli-stmt.bind-param.php) 및 [Convention] (http : // stackoverflow)에 따라 'string, string, string, string' .com/questions/18426172/what-do-bind-param-accomplish) – StuartLC

답변

0

$ search_text의 값을 설정하면 코드가 비어있어 모든 행을 반환합니다.

0

내가보기에 문제는 문자열에 공백이 있다는 것입니다. 제거해보십시오.

$search_text = "%".$search_text."%"; 

어포 스트로피를 포함해야 할 수도 있습니다.

$search_text = '"%'.$search_text.'%"'; 
+0

연결'.' 문자 주위의 공백은 중요하지 않습니다. '$ str1. $ str2'는'$ str. $ str2'과 같습니다. – ojrask

+0

첫 번째 시도. 일하지 않았어. 두 번째 시도. 지금 결과를 반환하지 않습니다. – Nerzid

관련 문제