2017-07-06 48 views
0

这里是我的函数我想把数组值置于IN()子句中,但它不起作用
这里$ids是传递给它的数组。传递数组来模拟函数查询codeigniter

function get_school_students_data($ids){ 
    $query=$this->db->query("SELECT * FROM screening_answers where uid 
    IN(".implode(',',$ids).")"); 
    $result=$query->result_array(); 
    return $query->num_rows(); 
    } 
+0

你是什么意思不工作?引发错误或错误的结果? – GeorgeGeorgitsis

+0

错误的结果只有数组的第一个索引显示 –

+0

尝试'echo“SELECT * FROM screening_answers where uid IN(”。implode(',',$ ids)。“)”;“并查看它是否正在生成期望的查询。如果看起来不错,那么数据库中没有数据。如果看起来不对,请修复SQL。如果'$ ids'包含字母,那么你需要构建你的'in()'子句来引用你的值。 – MonkeyZeus

回答

0

试试这个

$this->db->where_in('uid',$ids); 

所以在模型

function get_school_students_data($ids){ 
    $this->db->where_in('uid',$ids);//$ids should be an array like array('20','15','22','42','86') 
    $query = $this->db->get("screening_answers"); 
    $result=$this->db->result_array();// no need of this in your scenario 
    return $this->db->num_rows(); 
} 
+0

负面标记请解释你自己.. –

+0

我这样做没有显示结果 –

+0

你确定'$ ids'是一个数组,请发布您的控制器代码也... –

0

这是最好用笨的活动记录

$this->db->query("SELECT * FROM screening_answers where uid 
IN(".implode(',',$ids).")"); 

成为

$this->db->select(); 
$this->db->from('screening_answer'); 
$this->db->where_in('uid',$ids); 
0

试试这个公司对我 //工作对于简单/随机搜索

function search($designation){ 
     $this->db->select("*"); 
     foreach($designation as $single_data) $this->db->or_like("designation",$single_data); 
     $this->db->order_by('rand()'); 
     $this->db->limit(100); 
     $this->db->from('content'); 
     $query = $this->db->get(); 
     return $query->result(); 
    }