2012-12-16 5 views
2

사용자 이름을 검색하는 검색 양식이 있습니다. 문제는 제 데이터베이스에서 별 이름과 성을 가지고 있다는 것입니다. 이것은 내 쿼리는 현재 (이것은 PHP 스크립트 내부에서, 그리고 $ 용어가 검색 입력)처럼 보이는 방법입니다여러 컬럼에서 여러 용어 검색

SELECT * FROM profiles WHERE firstname LIKE '%$term%' OR lastname LIKE '%$term%' 

사용자 만 FIRSTNAME 또는 한글 이름 중 하나를 입력 할 때이 잘 작동하지만, 전체에 대한 "John Smith"와 같은 이름은 작동하지 않습니다.

효과적으로이 문제를 해결하기 위해 검색어 및/또는 PHP 스크립트를 어떻게 수정할 수 있습니까? 예를 들어 문자열을 먼저 분할해야합니까?

답변

1

당신은 %$term%에 FIRSTNAME 플러스 공간 플러스 성을 comparares

WHERE firstname||' '||lastname LIKE '%$term%' 

과 같은 작업을 수행 할 수 있습니다.

그러나 변수를 사용하여 SQL 쿼리를 작성하면 안됩니다. PDO를 통해 매개 변수화 된 쿼리를 사용해야합니다. 예제는 http://bobby-tables.com/php.html을 참조하십시오.

+0

불행히도 그것은 저를 위해 작동하지 않았습니다. 나는 이제 MATCH와 AGAINST를 사용하고 있지만, "artin"이라는 용어는 "Martin"이라는 결과를 나타내지 않을 것이지만, 적어도 "marti"는 그다지 단점이 있습니다. 예, 간단하게하기 위해 PDO를 사용하지 않습니다. 보통 mysqli의 prepared statements를 사용합니다. :) –

+0

그러나 준비된 문장을 사용하고 있지 않거나 SQL 문을 작성했기 때문에 올바르게 작성하지 않았습니다. 프로그램 외부 변수의 명령. –

+0

알아. 필자는 "보통"준비된 문장을 사용하지만, 내가 신경 쓸 일이 없기 때문에, 그리고 내가 알고 싶어하는 것에 영향을 미치지 않기 때문에 여기서는 사용하지 않는다 : 쿼리 구조 –

관련 문제