【问题标题】:set a array in where clause在 where 子句中设置一个数组
【发布时间】:2014-04-10 07:11:01
【问题描述】:

我想在 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,@98765431 987654332@,6,6,6,`6"

但不知何故,这在 where_in 或 where 子句中不起作用。

【问题讨论】:

  • 为什么在代码中间使用return语句?
  • 因为我需要获取返回值以在 where 子句中使用。

标签: mysql sql codeigniter


【解决方案1】:

你错过了使用反引号你需要引号。将你的 where_in() 更改为

$this->db->where_in("idProject",$project);
/* $project should be an array containing list of ids not a string */

根据where_in() 中的Active Record,您可以在第二个参数中传递值数组

或者直接使用where()

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

【讨论】:

  • 然后我在转储变量时得到 bool (false)。
  • @Rene 查看我更新的答案并准确说明哪个示例不起作用
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多