codeigniter中多个where_in条件的数组

时间:2017-08-30 07:28:08

标签: php mysql codeigniter

$this->db->where('column_field1',$value1);
$this->db->where('column_field2',$value2);

对于以上两个查询,我们可以将单个查询编写为:

$arr = array('column_field1'=>'value1', 'columne_field2'=>'value2');

function select($arr){
    .. .. ..
    ... .. . ..
    $this->db->where($arr);
}

是否存在where_in查询的任何解决方案:

function($value1, $value2){
   $this->db->where_in('column_field1',$value1);
   $this->db->where_in('column_field2',$value2);
}

正如我尝试但没有奏效:

arr = array('column_field1'=>$arr,'column_field2'=>arr2);

function select_in($arr)
 {
        $this->db->select('*');
        $this->db->from('table');
        $this->db->where_in($arr);
        $query = $this->db->get();
        return $query;
    }

我想结合where_in条件,以便我可以为它存储多个column_field和数组。     $这 - > DB-> where_in($ ARR); 其中$ arr包含一对column_filed和array_of_value:     $ arr = $ array('column_field'=> $ arr_of_value);

3 个答案:

答案 0 :(得分:1)

function select_in($arr)
 {
        $this->db->select('*');
        $this->db->from('table');
        $this->db->where($arr);  // change here
        $query = $this->db->get();
        return $query;
    }

如果你想要多个在哪里,你需要写两次......在单一陈述中不可能。

$this->db->where_in('field1',$cond1);
$this->db->where_in('field2' , $cond2);

注意:Where_in类似于id IN(1,2,3 ...),但在你的情况下,你在条件下做多次。

答案 1 :(得分:1)

创建自定义方法是一个合理的解决方案,你可以扩展数据库的活动记录类或编写自定义函数,它接受数组并调用where_in如下所示

function multiple_where_in($array){
    foreach($array as $key  => $data){
        $this->db->where_in($key, $data);
    }
  }

并按以下方式致电

function select_in($arr)
{
        $this->db->select('*');
        $this->db->from('your_table');
        $this->multiple_where_in($arr);  // call local function created above
        $query = $this->db->get();
        return $query;
}

// create array like below, fieldname and field_values inside array
$arr = array(
              'column_field1'=>array('value1','value2'),  
              'columne_field2'=>array('value2','value3')
);

// call your select method
$this->select_in($arr);

答案 2 :(得分:0)

您可以针对您的问题尝试此解决方案。

    $this->db->select('*');
    $this->db->from('table');
    if(!empty($cond1) && !empty($cond2)){
        $this->db->where("field1 IN (".$cond1.") AND field2 IN (".$cond2.") ",null,false);    
    }
    $query = $this->db->get();
    return $query;

我希望这会对你有所帮助。谢谢!