我想在 where 子句中设置一个数组。
function rapport_detail_opbrengsten($idKlant){
$this->db->from('Project');
$this->db->join('Opbrengsten', 'Opbrengsten.idProject = Project.idProject');
if ($idKlant > 0){
$this->db->where('idKlant', $idKlant);}
$query = $this->db->get();
$project = array();
foreach($query->result() as $row){
$project[] = $row->idProject;
}
return implode("`,`", $project);
$this->db->select('idProject, SUM(Prijs) as total');
$this->db->from('Opbrengsten');
$this->db->where_in('idProject', $project);
$this->db->group_by('idProject');
$query = $this->db->get();
if($query->num_rows()>0){
return $query->result();
}
else{
return false;
}
}
返回结果如下:string(66) "7
,14
,14
,81
, 81
、81
、14
、9
、15
、11
,12
,6
,6
,6
,`6"
但不知何故,这在 where_in 或 where 子句中不起作用。
最佳答案
您错过了在需要引号的地方使用反引号。将 where_in()
更改为
$this->db->where_in("idProject",$project);
/* $project should be an array containing list of ids not a string */
根据Active Record在 where_in()
中,您可以在第二个参数中传递值数组
或者只使用where()
$this->db->where("idProject IN('".join("','",$project)."')",FALSE);
关于mysql - 在where子句中设置一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22981050/