我建立了一个查询:
public function getContacts($limit, $start, $search)
{
$this->db->limit($limit, $start);
if (!empty($search)) {
$this->db->like('name', $search);
$this->db->or_like('last_name', $search);
$this->db->or_like('phone_number', $search);
$this->db->or_like('created_at', $search);
$this->db->or_like('note', $search);
}
$query = $this->db->get_where('contact', array('user_id' => 3));
return $query->result_array();
}
但是where子句不起作用。它应该只返回用户id等于3的结果,但它返回所有结果。
怎么了?
这是执行的查询:
SELECT * FROM `contact` WHERE name LIKE '%stefano%' ESCAPE '!' OR last_name LIKE '%stefano%' ESCAPE '!' OR phone_number LIKE '%stefano%' ESCAPE '!' OR created_at LIKE '%stefano%' ESCAPE '!' OR note LIKE '%stefano%' ESCAPE '!' AND `user_id` = 3 LIMIT 2
已在Workbench中尝试此查询,但仍忽略和用户id=3。
如果我的逻辑没有错,它应该只返回用户id=3但返回全部的行。
最佳答案
您需要添加group_start()和group_end()。如下所示。
if (!empty($search)) {
$this->db->group_start();
$this->db->like('name', $search);
$this->db->or_like('last_name', $search);
$this->db->or_like('phone_number', $search);
$this->db->or_like('created_at', $search);
$this->db->or_like('note', $search);
->group_end();
}
关于php - Codeigniter db query子句不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49745254/