$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);
答案 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;
我希望这会对你有所帮助。谢谢!