2016-11-16 48 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