2012-01-08 5 views
0

테이블 Companies 열에서 내 데이터는 여기 PHP 검색 FULLTEXT 이스케이프 문자열 여기

CK'Wang Pte Ltd 
Chong Wang Pte Ltd 
CK'Studio Pte Ltd 

cName

$query = mysql_query("SELECT cName FROM Companies WHERE MATCH cName AGAINST ('+CK\'Wang Pte Ltd' IN BOOLEAN MODE)"); 
$result = mysql_num_rows($query); 

은 $ 결과 쇼 2. 내 쿼리입니다 있습니다 어떻게 난 단지 MATCH (1) (CK'Wang Pte Ltd) 대신 2

+2

사용 매개 변수는 첫 번째 장소에서 탈출 할 필요가 없도록 (그리고 SQL 주입을 방지)의 – xQbert

+0

중복 가능성을 위해 :

function fulltext_match_all($query) { $final = array(); foreach (array_filter(preg_split('/[\s\'-]+/', $query)) as $word) { $final[] = "+$word"; } $query = implode(' ', $final); } 

귀하의 최종 쿼리는 다음과 같을 것 PHP에서 SQL 삽입을 중지하는 방법] (http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php) – hakre

답변

1

모든 조건을 부울 모드로 일치 시키려면 모든 용어 앞에 +를 추가해야합니다. 쿼리가 해석되는 방식, CK는 필수 항목이며 다른 모든 조건은 선택 사항이며 대부분 결과 순위에 영향을 미칩니다.

사용자 요청에서 쿼리를 작성하고 모든 조건과 일치해야하는 경우 먼저 변환해야합니다. [베스트 대신 인라인 SQL의

SELECT cName FROM Companies WHERE MATCH cName AGAINST ('+CK +Wang +Pte +Ltd' IN BOOLEAN MODE)