2015-09-20 70 views
0

我想在笨運行此查詢笨嵌套其中條件

select * from connections where (first_user=$u_id and second_user=$id) OR (first_user=$id and second_user=$u_id) 

控制器I爲上述代碼創建如下

$where = array('first_user' => $this->session->userdata('u_id') , 'second_user'=> $this->uri->segment(4)); 
$or_where = array('first_user' => $this->uri->segment(4) , 'second_user'=> $this->session->userdata('u_id')); 
$data['friendship']=$this->user_model->get_sql_select_data_or_where('connections', $where, $or_where, NULL, '1'); 

和功能get_sql_select_data_or_where如下

public function get_sql_select_data_or_where($tablename, $where = '', $or_where = '', $feild = '', $limit = '', $order_by = '', $like = '') { 

    if (!empty($feild)) 
     $this->db->select($feild); 

    if (empty($feild)) 
     $this->db->select(); 

    if (!empty($where)) 
     $this->db->where($where); 

    if (!empty($or_where)) 
     $this->db->or_where($or_where); 

    if (!empty($limit)) 
     $this->db->limit($limit); 

    if (!empty($like)) 
     $this->db->like($like); 

    if (!empty($order_by)) 
     $this->db->order_by($order_by); 

    $this->db->from($tablename); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
寫入

但是當我打印查詢時,結果如下

SELECT * FROM (`connections`) WHERE `first_user` = '28' AND `second_user` = '20' OR `first_user` = '20' OR `second_user` = '28' LIMIT 1 

我在哪裏預期AND條件而不是第二個OR。什麼可能會出錯?

回答

0

您可以直接使用:

$where = (first_user=$this->session->userdata('u_id') AND second_user= $this->uri->segment(4)) OR (first_user=$this->uri->segment(4) AND second_user=$this->session->userdata('u_id')); 

可以參考這個鏈接引用 Codeigniter select query with AND and OR condition