2016-11-16 134 views
0

Table: search_resultMySQL查詢使用group_start與像 - 笨活動記錄

我想目前的MySQL查詢更改爲活動記錄。

SELECT * FROM search_result 
WHERE experience 
LIKE 'hello%' OR 
bio LIKE 'hello%' OR 
FIND_IN_SET('3D Design',skills); 

我試過以下查詢,但顯示錯誤的輸出。

$this->db->from('search_result'); 
if($keyword){ 
    $this->db->like('experience', $keyword); 
    $this->db->or_like('bio', $keyword); 
}elseif($s_id){ 
    $this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0); 
    for($x=1; $x < count($s_id); $x++) { 
     $this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0); 
    } 
} 
............ 
$query = $this->db->get(); 
return $query->result_array(); 

回答

0

您是不是要找這個

$this->db->from('search_result'); 
$this->db->where("experience LIKE 'hello%' 
        OR bio LIKE 'hello%' 
        OR FIND_IN_SET('3D Design',skills)"); 
0

我可以看到兩個錯誤,

在你的原始查詢你有通配符%只有搜索詞後,讓您的活動記錄查詢應該是

$this->db->like('experience', $keyword, 'after'); 
$this->db->or_like('bio', $keyword, 'after'); 

在你的elseif,有一組OR度的條件下,你可以做到這一點的活動記錄像

$this->db->group_start(); 
    $this->db->where("FIND_IN_SET('$s_id[0]', skills)"); // no need to compare to 0 
    for($x=1; $x < count($s_id); $x++) { 
     $this->db->or_where("FIND_IN_SET('$s_id[$x]', skills)"); 
$this->db->group_end(); 

參考:Codeigniter Active Record Query Builder

+0

我試着用'$這個 - > DB-> group_start();',但仍然顯示了同樣的結果。 – Shihas

+0

您面臨的問題是什麼? – Viral

+0

一旦我運行原始查詢,我得到7個結果。但對於只顯示3個活動記錄(即只有'LIKE'條件的結果)。 – Shihas