You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3执行foreach报错Invalid argument supplied for foreach() 读取id列失败

CodeIgniter 3 遍历查询结果报错"Invalid argument supplied for foreach()"排查方案

错误产生原因

  • 模型的get_users()方法未返回查询结果:$this->db->get('users')仅执行了SQL查询操作,但没有获取结果集,也没有将结果返回给控制器调用方,导致控制器中拿到的$result值为null,不符合foreach要求遍历参数为数组/可遍历对象的规则,触发报错。
  • 额外兼容场景:即使模型返回了结果集,若数据表为空时返回空值,也可能触发同类报错,建议增加前置判断逻辑。

对应解决方法

1. 修正模型代码,返回符合要求的结果集

调整User_model的get_users()方法,调用result()获取对象格式的结果集并返回,和你控制器中$object->id的取值写法适配:

<?php

class User_model extends CI_Model {
    
    public function get_users(){
        $query = $this->db->get('users');
        // 返回对象格式的结果集
        return $query->result();
    }
}

?>

如果你需要数组格式的结果,可以把return $query->result()替换为return $query->result_array(),对应控制器取值改为$item['id']即可。

2. 控制器增加非空判断(可选,推荐添加增强鲁棒性)

遍历前先判断结果集有效性,避免表内无数据时再次触发报错:

<?php

class Users extends CI_Controller {
    
    public function show(){
        
        $this->load->model('user_model');
        $result = $this->user_model->get_users();
        // 先校验结果有效性再遍历
        if (!empty($result) && is_array($result)) {
            foreach($result as $object){
                echo $object->id;
            }
        } else {
            echo "未查询到匹配的用户数据";
        }
    }
}

?>

内容的提问来源于stack exchange,提问作者qazidev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:45:07