【发布时间】:2018-04-10 04:20:29
【问题描述】:
我建立了一个查询:
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 子句不起作用。它应该只返回 user_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 中尝试了此查询,但仍然忽略 AND user_id = 3。 如果我的逻辑没有错,它应该只返回 user_id = 3 但返回全部的行。
【问题讨论】:
-
将
->where添加到其他所有内容之上怎么样 -
试过了还是不行
-
你使用的是哪个版本@StefanoMaglione
-
3.1.8 是我的版本
-
奇怪,做
$this->db->where('user_id', 3); echo $this->db->get_compiled_select('contact');并分享声明(删除所有包括$query)。
标签: php mysql codeigniter