首页 > 解决方案 > 如何将一组数据从模型传递到控制器,然后再传回模型?

问题描述

我正在尝试根据从其他行(上一个查询)获得的信息从我的数据库表中选择行。我遇到的麻烦是将$query->result_array();控制器中的 转换为再次在模型中使用它,然后在视图中使用它。

我试图做一个foreach循环并$query->result_array();从模型中返回,结果证明这是有问题的,因为它不适合我网站上的不同阶段(我有几个阶段的内容)。

控制器.php

public function firststage() {

   $this->load->model('Model');
   $get_stage = $_GET["stg"];

   $get_results = $this->Model->get_stage_id($get_stage);
   foreach ($get_results as $results) {

   $id = $results["id"];
   }

   $data['result'] = $this->Model->stage_results($get_stage, $id);
   $this->load->view('stage_view', $data);
}

模型.php

public function get_stage_id($get_stage) {

   $this->db->where('stage_parent', $get_stage);
   $query = $this->db->get('stages');

   return $query->result_array();
}

public function stage_results($get_stage, $id) {

   $this->db->where('stage_id', $get_stage);
   $this->db->where('stage_id', $id);
   $query = $this->db->get('stage_contents');

   foreach ($query->result_array() as $row) {

   $rows[] = array(
   'id' => $row["id"],
   'name' => $row["name"]
   ); 

  }
  return $rows;
}

期望输出选择基于第一个查询结果,而不是Undefined variable: rows在我运行所有结果时得到。我认为我的观点与这个问题无关,但如果您不这么认为,请告诉我!

标签: phpmysqlcodeigniter

解决方案


你得到错误

未定义变量:$rows

因为您的查询不返回任何结果,因此 $rows 未定义

如果有行返回,您可以解决此检查:

if($query->num_rows()){
   foreach ($query->result_array() as $row) {
       $rows[] = array(
           'id' => $row["ID"],
           'name' => $row["name"]
        ); 
   }
}else {$rows='no records found';}
print_r($rows);die;     

这将打印数组(如果有结果)或“无记录”

或者干脆做:

$rows = array();
foreach ($query->result_array() as $row) {
   $rows[] = array(
       'id' => $row["ID"],
       'name' => $row["name"]
    ); 
}

然后如果没有结果,你会得到一个空数组


推荐阅读