CodeIgniter $ this-> db-> where();组合AND和OR

时间:2013-04-06 21:46:18

标签: php codeigniter

我需要创建这个选择:

SELECT * FROM units
WHERE ((um like '%str%'  AND desc like '%str%') AND deleted = 0)

所以我尝试使用

$search = 'str';

$this->db->from('units');
$this->db->where("(um LIKE '%".$this->db->escape_like_str($search)."%' or
desc LIKE '%".$this->db->escape_like_str($search)."%') and deleted=0");
return $this->db->get();    

但这不起作用,即使在我的其他表,控制器,模块上工作正常。 编辑:我看到为什么它不起作用,因为desc ...但我的问题仍然在下面......

我尝试使用它并正常工作

$this->db->from('units');
$this->db->where('deleted',0);
$this->db->like('desc', $search);
$this->db->or_like('um', $search);

但这表示为:

WHERE deleted = 0 AND desc like  '%str%' AND um like  '%str%'

我可以将or_like和like结合起来吗?并删除另一个,因为现在它显示所有被删除的,因为or_like。

1 个答案:

答案 0 :(得分:0)

这个

  

SELECT * FROM units WHERE((嗯像'%str%'和desc喜欢'%str%')   AND deleted = 0)

你必须这样做:

$this->db->select('*');
$this->db->from('units');
$this->db->where("((units.um LIKE '%str%'  AND units.desc LIKE '%str%') AND deleted = '0')",NULL);
$query = $this->db->get();
return $query->result();