为什么get_where()函数不起作用,而get()完成它不应该的工作

时间:2014-07-27 20:23:52

标签: php codeigniter activerecord

我正在使用codeigniter活动记录类。

我在这里尝试的是使用参数get_users从控制器调用$user_id方法。

如果$user_idnull,则从users表中获取所有条目,否则它应该为我提供与使用get_where()方法传递的数组匹配的条目。

但是get_where方法不起作用而get()方法的目的是使用相同的参数。为什么会这样?感谢。

public function get_users($user_id=null)
{
    if($user_id === null){
        $q = $this->db->get('users');

    }
    elseif (is_array($user_id)) {
        $q = $this->db->get('users', $user_id); 
        //$q = $this->db->get_where('users', $user_id); // not working
        $result = $q->row_array();
    }

    return $q->result_array();      
}

1 个答案:

答案 0 :(得分:2)

您对get_where()的使用是错误的:

应该是:

$q = $this->db->get_where('users', array('userid_fieldname_in_table'=>$user_id));

第二个参数应该是一个关联数组,其中键是表的字段名,值是要查找的值。

由于您传递数组,最好使用:

$this->db->where_in('filename', $array_of_values());

您可以阅读more in the documentation