2013-07-01 2 views
0

나는 데이터를 가져와 일부 단어를 제거한 다음 배열에 배치하여 쿼리에 넣습니다.str_replace와 같은 쿼리

단어가 잘린 것처럼 보일 수도 있지만 같은 문장은 여전히 ​​위치를 파악하고 빈 검색을 삽입합니다. 제비 갈매기에있는 것은 모두를 끌어 당기고 있습니다.

저는 이것이 왜 그렇게하고 있는지 잘 모르겠습니다. 나는 그것이 단어 사이에 여분의 공간을 추가하는 것처럼 보이지 않는다. 그리고 나는 배열을 인쇄 해 보았고 아무것도 보이지 않아서 나는 손실되었다.

내 않는 str_replace

$str = str_replace(array('and', 'this', 'that', 'or', 'boo', 'wound', 'but'), '', $userPost); 

내가 다음

$words = explode(' ', $str); 

다음 foreach 문에 내 같은 문

을하고 있어요 배열로 그것을 설정하는 공간에서 폭발 해요
$this->db->or_where("`terms` LIKE '%$word%'"); 

이 쿼리는 다음과 같이 나오고 있습니다.

SELECT * FROM (`filter_tbl`) WHERE `terms` LIKE '%real%' OR `terms` LIKE '%%' OR `terms` LIKE '%blank%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%I%' OR `terms` LIKE '%love%' OR `terms` LIKE '%%' OR `terms` LIKE '%ty%' OR `terms` LIKE '%lets%' OR `terms` LIKE '%see%' OR `terms` LIKE '%if%' OR `terms` LIKE '%%' OR `terms` LIKE '%goes%' OR `terms` LIKE '%through%' OR `terms` LIKE '%please%' OR `terms` LIKE '%gg%' OR `terms` LIKE '%through%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' 

나는 그것이 아마도 내가 누락 된 단순한 것이지만, 나는 그것을 볼 수 없다는 것을 알고있다. 도움을 주시면 감사하겠습니다!

+0

전체 텍스트 검색을 대신 사용하십시오. –

+0

전체 텍스트를 사용하고 있습니다. 그냥 불필요한 단어를 생략하려고합니다. – zazvorniki

+0

그러면 쿼리가 잘못되었습니다. –

답변

1

사람들이 위에 게시 했으므로 전체 텍스트 인덱스에 대한 쿼리가 올바르지 않습니다. OR 절은 일반적으로 작동하지만 성능이 좋지 않을 수 있습니다. 당신이 당신의 입력의 끝에 여분의 공백을 없애려면

, 당신은 아마 당신의 배열에서 여분의 공백을 트림 할 필요가

에서 불필요한 항목을 제거해야
$words = explode(' ', $str); // from your code 
$words = array_map('trim',$words); // trim any extra whitespace from the words array 
$words = array_filter($words); // remove any blank elements 

당신의 OR 조항.