在codeigniter中,只有从MySQL检索到的值列表中的最后一个值存储在变量中


Only the last value from the list of values retrieved from MySQL is stored in the variable in codeigniter

我试图使用query1从MySQL表中获取值列表,然后在query2中使用它们来获取值。Query1给出4个值,而Query2给出的输出与Query1的最后一个值相匹配。

以下是我的控制器代码
public function example_ctl(){
  $data['result'] = $this->some_model->example();
}

我的模型代码

public function example() {
        $query = "select m.queue_id from agent_queue_mapping_table as m, user_table as u where u.id=m.user_id and m.company_id = ".$this->session->userdata('user_comp_id')." and u.id = ".$this->session->userdata('user_id');
        $res = $this->db->query($query); 
        foreach ($res->result_array() as $value) {
            $queue_ids = implode(',', $value);
        }
        $query_ticket = "select * from tickets_table where company_id = ".$this->session->userdata('user_comp_id')." and ticket_status = 'New' and queue_id IN (".$queue_ids.") ORDER BY id DESC LIMIT 3";
        $res_ticket = $this->db->query($query_ticket);  
        return $res_ticket->result_array();
 }

我不知道我哪里出错了。请帮助。

试着把你的代码改成

<?php 
    $queue_id = array();
     foreach ($res->result_array() as $value) {
                $queue_id[] = $value;
            }
            $queue_id = implode(",",$value);
 ?>

$queue_id在每次循环执行时都会在循环中被重写,这就是为什么你会得到last value

这就是我如何解决这个问题。

$query = "select m.queue_id from agent_queue_mapping_table as m, user_table as u where u.id=m.user_id and m.company_id = ".$this->session->userdata('user_comp_id')." and u.id = ".$this->session->userdata('user_id');
        $res = $this->db->query($query); 
        foreach ($res->result_array() as $value) {
            $queue_ids[] = $value['queue_id'];
        }
        $queue_id = implode(',', $queue_ids);
        $query_ticket = "select * from tickets_table where company_id = ".$this->session->userdata('user_comp_id')." and ticket_status = 'New' and queue_id IN (".$queue_id.") ORDER BY id DESC LIMIT 3";
        $res_ticket = $this->db->query($query_ticket);  
        return $res_ticket->result_array();