2014-07-09 2 views
0

을 위해 내가 몇 가지 키워드 행을 찾을 수있는 내용 테이블을 검색 할 수있는 쿼리를 가지고있는 것처럼 조회 할 수 있습니다. (CodeIgniter를)어떻게 하나 개 이상의 키워드

내가 키워드를 저장하는 열 (지방의 이름)가 있습니다.

나는 그들을 찾아야하는 주와 관련 지방을 가지고있다.

나는 키워드 배열을 가지고 있으며 색인의 개수가 명확하지 않습니다. 내가 복수 키워드

와 내용을 검색 할 수있는 방법 너무

이 CI 특정 구현에 대한

public function province($province_name,$provinces_name,$language) 
{ 
    $ps_name = str_replace("-", " ", $provinces_name); 
    $lang=$language; 

    $data = $this->db 
       ->select('*') 
       ->from('content') 
       ->where("language",$lang) 
       ->where("keywords",$province_name) 
       ->or_like("keywords","%$ps_name%") 
       ->limit("14") 
       ->order_by("id","DESC") 
       ->get(); 

    if ($data->num_rows > 0) { 
     return $data->result(); 
    } else{ 
     return false; 
    } 
} 

답변

0

키워드 배열이 있고 각 키워드를 한 번에 검색하려는 경우 루프 내에서 $this->db->or_like()을 사용할 수 있습니다. 아래 코드를 시도하십시오 :

$keywords = array("keyword1", 
        "keyword2", 
        "keyword3", 
      ); 

foreach($keywords as $k) 
{ 
    $this->db->or_like("keywords", $k); 
} 

$this->db->where("language", $lang); 
$this->db->limit("14"); 
$this->db->order_by("id", "DESC"); 
$query = $this->db->get("content"); 
+0

어떻게 foreach를 쿼리에 사용할 수 있습니까? –

+0

-> ('*')를 선택 \t \t \t \t \t \t -> ('noor_content') \t \t \t \t \t \t의 foreach ($ K와 같은 $의 provinces_name) { 에서 -> or_like ("키워드", $ K); } \t \t \t \t \t \t -> ("언어", $ LANG) -> ("키워드", $의 province_name) -> 제한 ("14") \t \t \t \t \t \t - > order_by ("id", "DESC") \t \t \t \t \t -> get(); –

+0

현재 체인 방법을 사용하여 쿼리를 작성 중입니다. 위에서 한 것처럼 질의를 해독 할 수 있습니다. 'or_like'를 반복하면 'or_like-wildcards-keyword' 체인이 만들어집니다. –

0

확실하지 모델에서 내 쿼리,하지만 당신은 검색과 같은 기능을 수행하는 경우 여러 키워드를 사용하면 MySQL's full-text search (InnoDB 또는 MyIASM)을 볼 수 있습니다. 또는 꽤 좋은 튜토리얼 here.

관련 문제