简体   繁体   English

Codeigniter db query子句不起作用

[英]Codeigniter db query clause where not working

I built a query: 我构建了一个查询:

 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();

}

but the where clause does not work. 但是where子句不起作用。 It should return only results with user_id equals to 3 but it returns everything. 它应该仅返回user_id等于3的结果,但它返回所有内容。

What is wrong? 怎么了?

This is the query executed: 这是执行的查询:

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

Tried this query in Workbench and still ignoring the AND user_id = 3. If my logic is not wrong it should return only rows where user_id = 3 but returns all. 在Workbench中尝试此查询并仍然忽略AND user_id = 3.如果我的逻辑没有错误,它应该只返回user_id = 3但返回all的行。

you need to add group_start() and group_end().like this. 你需要添加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();
    }

Try this 尝试这个

public function getContacts($limit, $start, $search)
{
  $this->db->select('*');
  $this->db->from('contact');
  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);
  }

  $this->db->where(array('user_id' => 3));
  $this->db->limit($limit, $start);
  $query = $this->db->get();
  return $query->result_array();
}

Try this code: 试试这段代码:

public function getContacts($limit, $start, $search)
{

    $this->db->limit($limit, $start);

    if (!empty($search)) {
        $this->db->select(*);
        $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);
    }



    $this->db->select(*);
    $this->db->where('user_id','3');
    $query = $this->db->get('tablename');
    return $query->result_array();

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM