【问题标题】:How can I return multiple rows from the model same function in codeigniter?如何从 codeigniter 中的模型相同函数返回多行?
【发布时间】:2017-03-11 08:40:28
【问题描述】:

此代码只打印一行,不打印所有数据

型号

public function schbysempaid($batch, $sem){
        $query=$this->db->query("SELECT * FROM stu WHERE curem=$sem AND baid=$batch");
        foreach ($query->result_array() as $row) {
            $querys=$this->db->query("SELECT SUM(install.adfee) as am,SUM(install.lifee) as lb,SUM(install.tfee) as tt,SUM(install.enrfee) as enr,SUM(install.refee) as re,SUM(install.spofee) as spo,SUM(install.exfee) as ex FROM stu JOIN install ON install.sid=stu.sid Where install.sid='".$row['sid']."' AND install.curem=$sem AND stu.curem=$sem AND stu.baid=$batch AND install.paid=1");
        return $querys->result_array();
        }
    }

控制器

public function searchsubmit()
{
        $batch=$this->input->post('srch');
        $sem=$this->input->post('srch1');
        $data['searchpaid']=$this->law_model->schbysempaid($batch, $sem);
        $this->load->view('admission/dashboard',$data);
}

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:

    您在 foreach 循环中返回结果,而不是您可以将该数据保存在数组中,并在循环结束后返回它。检查下面

    function schbysempaid($batch, $sem)
    {
        $query = $this->db->query("SELECT * FROM stu WHERE curem=$sem AND baid=$batch");
        $result = $query->result_array();
        $retArr = [];
        foreach ($result as $row) {
            $querys = $this->db->query("SELECT SUM(install.adfee) as am,SUM(install.lifee) as lb,SUM(install.tfee) as tt,SUM(install.enrfee) as enr,SUM(install.refee) as re,SUM(install.spofee) as spo,SUM(install.exfee) as ex FROM stu JOIN install ON install.sid=stu.sid Where install.sid='" . $row['sid'] . "' AND install.curem=$sem AND stu.curem=$sem AND stu.baid=$batch AND install.paid=1");
            $retArr[] = $querys->result_array();
        }
        return $retArr; // I am returning your data here
    }
    

    【讨论】:

      【解决方案2】:

      更改以下行:

      return $querys->result_array();
      

      $response[] = $querys->result_array();
      

      解释:您在循环中使用$querys->result_array();,在这种情况下,对于第一次迭代,它会返回结果并跳过下一次迭代。所以将它保存在某个数组中并像这样返回它:

      return $response;
      

      【讨论】:

        【解决方案3】:

        型号

        public function schbysempaid($batch, $sem){
        $result = array();
                $query=$this->db->query("SELECT * FROM stu WHERE curem=$sem AND baid=$batch");
                foreach ($query->result_array() as $row) {
                    $querys=$this->db->query("SELECT SUM(install.adfee) as am,SUM(install.lifee) as lb,SUM(install.tfee) as tt,SUM(install.enrfee) as enr,SUM(install.refee) as re,SUM(install.spofee) as spo,SUM(install.exfee) as ex FROM stu JOIN install ON install.sid=stu.sid Where install.sid='".$row['sid']."' AND install.curem=$sem AND stu.curem=$sem AND stu.baid=$batch AND install.paid=1");
                $result[] = $querys->result_array();
        }
        
        return $result;
            }
        

        控制器

            public function searchsubmit()
        {
                $batch=$this->input->post('srch');
                $sem=$this->input->post('srch1');
                $data['result']=$this->law_model->schbysempaid($batch, $sem);
                $this->load->view('admission/dashboard',$data);
        }
        

        查看

        foreach($result as $paid){
        <td><?php echo $paid['am'] ?></td>
                                  <td><?php echo $paid['lb'] ?></td>
                                  <td><?php echo $paid['tt'] ?></td>
                                  <td><?php echo $paid['spo'] ?></td>
                                  <td><?php echo $paid['ex'] ?></td>
                                  <td><?php echo $paid['enr'] ?></td>
                                  <td><?php echo $paid['re'] ?></td>
        }
        

        【讨论】:

        • 请给出完整的错误。所以我可以正确理解
        • 我只想知道什么是未定义的..?我的意思是哪个变量是未定义的。?
        • 未定义索引:am 等等
        【解决方案4】:

        您只得到一行,因为在您的模型中,您的 return 语句位于循环内,因此在第一次迭代后返回数据。尝试将 return 语句放在循环之后。

        public function schbysempaid($batch, $sem){
            $query=$this->db->query("SELECT * FROM stu WHERE curem=$sem AND baid=$batch");
            $temp_arr = array();
            foreach ($query->result_array() as $row) {
                $querys=$this->db->query("SELECT SUM(install.adfee) as am,SUM(install.lifee) as lb,SUM(install.tfee) as tt,SUM(install.enrfee) as enr,SUM(install.refee) as re,SUM(install.spofee) as spo,SUM(install.exfee) as ex FROM stu JOIN install ON install.sid=stu.sid Where install.sid='".$row['sid']."' AND install.curem=$sem AND stu.curem=$sem AND stu.baid=$batch AND install.paid=1");
                array_push($temp_arr , $querys->result_array());
            }
            return $temp_arr;
        }
        

        【讨论】:

          猜你喜欢
          • 2015-09-08
          • 2019-05-25
          • 1970-01-01
          • 1970-01-01
          • 2021-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多