mysql - 在where子句中设置一个数组

标签 mysql sql codeigniter

我想在 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, 81811491511,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 Recordwhere_in() 中,您可以在第二个参数中传递值数组

或者只使用where()

$this->db->where("idProject IN('".join("','",$project)."')",FALSE);

关于mysql - 在where子句中设置一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22981050/

相关文章:

c# - 如何将从数据库检索的 smalldatetime 转换回 smalldatetime 以重新发布到数据库

php - 填充编辑表单上的复选框

mysql - 导入现有的 Drupal 项目

sql - 如何在 TypeORM 查找选项中设置 IS NULL 条件?

php - 在 IE 中使用 AJAX 渲染问题

mysql - 学生连续缺课5天(节假日除外)

html - Bootstrap 样式被自动完成小部件破坏

mysql - 根据选择框值需要在 codeigniter 中显示 View 表

Mysql - 秒差意外结果

php - 比较值以给出不同的输出