下面的活动记录代码没有像我需要的那样对WHERE子句进行分组......
$this->db->where('customers_id',$this->user->getCurrentUserProperty('id'))
$this->db->like('delivery_name', $this->input->post('search'));
$this->db->or_like('customers_company', $this->input->post('search'));
$this->db->or_like('customers_company2', $this->input->post('search'));
$this->db->or_like('customers_company3', $this->input->post('search'));
$this->db->or_like('customers_company4', $this->input->post('search'));
这会生成
WHERE `customers_id` = 31509 AND `delivery_name` LIKE '%str%' OR `customers_company` LIKE '%str%'"
我需要输出在它周围括号括起来......我怎么能这样做?
WHERE `customers_id` = 31509 AND (`delivery_name` LIKE '%str%' OR `customers_company` LIKE '%str%')"
注意:我讨厌像这样烦人的时间的活跃记录
如果我使用下面的方法,我该如何清理输入以使其不是查询的原始内容?
$where = "name='Joe' AND status='boss' OR status='active'";
$this->db->where($where);
答案 0 :(得分:4)
不幸的是,似乎没有一种干净的方法可以做到这一点。 where
接受一个字符串作为子句,所以你可以这样做(是的,我知道,它不漂亮):
$search = $this->db->escape_like_str($this->input->post('search'));
$this->db->where('customers_id',$this->user->getCurrentUserProperty('id'));
$this->db->where("(`delivery_name` LIKE '%$search%' OR `customers_company` LIKE '%$search%')");
答案 1 :(得分:1)
在Codeigniter 3.0.3中,您可以这样简单地完成:
$this->db->where('customers_id',$this->user->getCurrentUserProperty('id'));
$this->db->group_start();
$this->db->like('delivery_name', $this->input->post('search'));
$this->db->or_like('customers_company', $this->input->post('search'));
$this->db->or_like('customers_company2', $this->input->post('search'));
$this->db->or_like('customers_company3', $this->input->post('search'));
$this->db->or_like('customers_company4', $this->input->post('search'));
$this->db->group_end();
也许它可以提供帮助