Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将一个查询的结果传递到第二个查询,并在一个表中显示结果?_Php_Mysql_Codeigniter_Foreach - Fatal编程技术网

Php 如何将一个查询的结果传递到第二个查询,并在一个表中显示结果?

Php 如何将一个查询的结果传递到第二个查询,并在一个表中显示结果?,php,mysql,codeigniter,foreach,Php,Mysql,Codeigniter,Foreach,我正在使用Codeigniter,并试图将一个查询的结果传递到另一个查询。我收到了错误 致命错误:无法将CI\u DB\u mysql\u类型的对象用作数组 如有任何建议,将不胜感激。 对于$truck_num查询,我只是在一个名为truck_num的字段中获取一个卡车列表,然后尝试将这些结果传递到一个进行一些计算的查询中 控制器 /////////// function average_battery_life_by_truck() { $truck_num = $this-

我正在使用Codeigniter,并试图将一个查询的结果传递到另一个查询。我收到了错误

致命错误:无法将CI\u DB\u mysql\u类型的对象用作数组

如有任何建议,将不胜感激。 对于$truck_num查询,我只是在一个名为truck_num的字段中获取一个卡车列表,然后尝试将这些结果传递到一个进行一些计算的查询中

控制器 ///////////

    function average_battery_life_by_truck() {

    $truck_num = $this->mhedash_model->select_truck();

    foreach($truck_num->result_array() as $row) {
    $array = $row['truck_num']; 
    $results[] = $this->mhedash_model->select_battery_life_truck($array);

    }

    $data['array'] = $results;

    $data['main_content'] = 'mhe/average_truck_bat';
    return $this->load->view('includes/template',$data);



}
看法 //////

模型/////

    function select_truck() {
    mysql_select_db('battery');
    $this->table_name = 'truck';


    $truck_num = "SELECT 
                    truck_num
                  FROM 
                    truck
                  WHERE 
                    battery_type_id = '5'
                    or battery_type_id = '8'
                    or battery_type_id = '10'
                    or battery_type_id = '9'
                  ORDER BY truck_num
              ";

             return $this->db->query($truck_num);
}

function select_battery_life_truck($data) {
    mysql_select_db('battery');
    $this->table_name = 'truck_hours';
    $truck_num = $this->db->escape($data);


    /*This query takes the current row's metered hours and subtracts it with the previous row's metered hours.
    We then average out the time the battery was on the truck for the date range */


    $query = "SELECT 
                ROUND(AVG(metered_hours-b),2) average_bat_life,
                truck_num
              FROM   (SELECT
                        id,
                        metered_hours,
                        loc_id,
                            (SELECT MAX(metered_hours) 
                             FROM 
                                (SELECT @rownum:=@rownum+1 id, truck_hours.metered_hours,truck_hours.loc_id from truck_hours,truck, (SELECT @rownum:=0) r where truck_hours.loc_id = truck.loc_id and truck.truck_num = $truck_num and DATE_SUB(CURDATE(),INTERVAL 30 DAY) >= truck_hours.ctrl_date  ) a 
                                 WHERE a.metered_hours < t.metered_hours)b

                                 FROM 
                            (SELECT @rownum:=@rownum+1 id, truck_hours.metered_hours,truck_hours.loc_id from truck_hours,truck, (SELECT @rownum:=0) r where truck_hours.loc_id = truck.loc_id and truck.truck_num = $truck_num and DATE_SUB(CURDATE(),INTERVAL 30 DAY) >= truck_hours.ctrl_date ) AS t) c,
                            truck

              WHERE c.loc_id = truck.loc_id 
              ORDER BY average_bat_life";
    return $this->db->query($query);
}

在第二个查询中,您并没有从数据库中获取数据

所以您需要添加fetch方法

在控制器中

foreach($truck_num->result_array() as $row) {
    $array = $row['truck_num']; 
    $result = $this->mhedash_model->select_battery_life_truck($array);
    foreach($result->result_array() as $row_data) {
         $results[] = $row_data; 
    }
    }
      $data['array'] = $results;
      $data['main_content'] = 'mhe/average_truck_bat';
      $this->load->view('includes/template',$data);

你的模型文件在哪里???我刚刚添加了它。对此很抱歉。在您的视图中,您使用foreach$array->result\u array作为$row{hm no dice,它返回致命错误:在我的视图的第24行(foreach行)的非对象上调用成员函数result\u array。可能值得一提的是,我刚刚删除了括号[]从控制器中的$results中,它给了我一个空行表,没有错误。我可以看到mysql数据运行了,但没有显示在页面上。我在视图中测试了result_数组后这样做。我认为这非常接近完成。使用新代码,它运行查询,并按预期返回表中的116行。表字段s都是空白的,但这是一个巨大的进步。很高兴知道它将帮助您删除错误!!它现在正在工作。我在控制器和视图上使用了我的$row['truck\u num']大写字母,对$row['average\u bat\u life']也做了同样的操作。你太棒了。
foreach($truck_num->result_array() as $row) {
    $array = $row['truck_num']; 
    $result = $this->mhedash_model->select_battery_life_truck($array);
    foreach($result->result_array() as $row_data) {
         $results[] = $row_data; 
    }
    }
      $data['array'] = $results;
      $data['main_content'] = 'mhe/average_truck_bat';
      $this->load->view('includes/template',$data);