2016-08-30 5 views
2

단어 사이에 간격을 사용하면 검색 쿼리에 0 개의 결과가 표시됩니다.여러 LIKE 조건을 사용하여 검색 쿼리가 예상대로 작동하지 않습니다.

DB : 예를 들어

TABLE NAME - peoples 
----------------------------------- 
ID - forename - surname 
----------------------------------- 
1  Johny   Depp 
2  Kobe   Bryant 
3  Random   Name 
4  Mark   Zuckerberg 

etc 

검색어 :

$sqlnames="SELECT id, forename, surname FROM peoples WHERE forename LIKE '%$search_keyword%' OR surname LIKE '%$search_keyword%' LIMIT 20"; 

, 만약 내가 입력하고 입력 예를 들면 : Johny는이 예상대로 보여줍니다 존 Depp 또는 내가 성을 입력 할 때 : Depp 예상대로,하지만 내가 전체 이름을 입력하는 경우 : Johny Depp, 그것은 0 결과를 제공합니다. 어떻게 해결할 수 있을까요?

영어로 불편을 끼쳐 드려 죄송합니다. 답변을 제공해 주셔서 감사합니다.

+0

아마 사용'와 OR' 할 가능성이 있습니까? – SuperDJ

+0

나는 어디에서나 OR을 사용하고 있습니다. 이거 나쁜거야? – Tauras

+0

'SELECT id, forename, surname FROM people like WHERE (forename LIKE '% $ search_keyword or'surname LIKE '% $ search_keyword %') LIMIT 20' – devpro

답변

1

것은 여기에 귀하의 쿼리입니다.

$sqlnames="SELECT id, forename, surname FROM peoples WHERE forename LIKE '%$search_keyword%' OR surname LIKE '%$search_keyword%' OR 
CONCAT(forename, ' ', surname) LIKE '%$search_keyword%' 
LIMIT 20"; 
+0

아약스 로딩 스크립트에서 500 오류를 제공합니다. – Tauras

+0

죄송합니다, 제 실수입니다. 지금 작동합니다. – Tauras

1

는 다음과 같은 시도 :

$sqlnames="SELECT id, forename, surname,concat(forename,' ',surname) as fullname FROM peoples WHERE fullname LIKE '%$search_keyword%' OR forename LIKE '%$search_keyword%' OR surname LIKE '%$search_keyword%' LIMIT 20"; 
+0

아약스 로딩 스크립트에서 500 오류를 제공합니다. – Tauras

+0

죄송합니다, 제 실수입니다. 지금 작동합니다. – Tauras

+0

@ 토러스 괜찮아 ..--) –

1

전체 이름을 검색 할 때 forename 안에 "성명"또는 성 안에 "성함"을 검색하고 있습니다. 그래서 결과를 얻지 못합니다.

를 추가해보십시오 다른 조건 당신은 검색 다음 단어를 분할 할 필요가 OR CONCAT(forename, ' ', surname) LIKE '%$search_keyword%'

1

:

$word_array = explode(" ",$search_keyword); 
$sqlnames="SELECT id, forename, surname FROM peoples WHERE"; 
$count = 0; 
foreach($word_array as $value){ 
    if($count == 0){ 
     $sqlnames .= " forname LIKE '" . $value ."'"; 
    } 
    else{ 
     $sqlnames .= " OR forname LIKE '" . $value ."'"; 
    } 
    $count = 1; 
    $sqlnames .= " OR surname LIKE '" . $value ."'";  
} 
$sqlnames .="LIMIT 20"; 
관련 문제