Php 在codeigniter中的自定义函数中使用不等于

Php 在codeigniter中的自定义函数中使用不等于,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我在我的控制器中创建了一个名为\u getwheredata的函数: public function __getwheredata($tablename,$tablefield=array(),$where=array(),$orderbyfield = 'id',$ascdesc = 'desc',$limit = 200,$offset='') { if(is_array($tablefield)){$tablefield = implode(',',$tablefield);}

我在
我的控制器
中创建了一个名为
\u getwheredata
的函数:

public function __getwheredata($tablename,$tablefield=array(),$where=array(),$orderbyfield = 'id',$ascdesc = 'desc',$limit = 200,$offset='')
{
    if(is_array($tablefield)){$tablefield = implode(',',$tablefield);}
    print_r($where);exit;
    $data = $this->db
                ->select($tablefield)
                ->from($tablename)
                ->where($where)
                ->order_by($orderbyfield, $ascdesc)
                ->limit($limit,$offset)
                ->get();
    return $data->result();
}
我需要获取
字段不等于1的数据

所以我调用函数如下:

$this->Usermodel->__getwheredata('users','*',array('rights!='=>1),'id','desc',NULL);
但这里的
array('rights!='=>1)
将在
where
条件的值中作为数组传递


那么我该如何解决这个问题呢?

也许您需要像这样对整个阵列进行字符串化:

$temp = '';
$index = 1;
$count = count($where);
foreach($where as $key => $value)
{
    $temp .= $key.$value;
    if($index < $count) $temp .= ',';
    $index++;
}
$where = $temp;
foreach($where as $key => $value)
{
    $this->db->where($key, $value);
}
foreach($where as $key => $value)
{
    $this->db->where($key, $value);
}
$data = $this->db->select($tablefield)
             ->from($tablename)
             ->order_by($orderbyfield, $ascdesc)
             ->limit($limit,$offset)
             ->get(); 

现在,您的函数将如下所示:

$temp = '';
$index = 1;
$count = count($where);
foreach($where as $key => $value)
{
    $temp .= $key.$value;
    if($index < $count) $temp .= ',';
    $index++;
}
$where = $temp;
foreach($where as $key => $value)
{
    $this->db->where($key, $value);
}
foreach($where as $key => $value)
{
    $this->db->where($key, $value);
}
$data = $this->db->select($tablefield)
             ->from($tablename)
             ->order_by($orderbyfield, $ascdesc)
             ->limit($limit,$offset)
             ->get(); 

我不希望字符串不等于要求,比如
where('field!=',1)
您可以通过向
where($string,NULL,FALSE)添加第三个参数来传递字符串和转义值但是如果你需要遵循规则,我会更新我的答案以匹配它。