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

CodeIgniter视图无法列出数据库对象结果:未定义变量data报错

解决CodeIgniter中"Undefined variable: data"的错误

看起来你遇到的核心问题是视图里找不到名为$data的变量,这通常是因为模型没返回数据、控制器没把数据传递给视图,或者视图里的变量名不匹配导致的。咱们一步步来修复:

1. 先修复你的Search_model

你当前的get_locations方法只执行了SQL查询,但没有把结果返回出去!CodeIgniter的模型方法需要明确返回数据,控制器才能拿到。修改模型代码:

class Search_model extends CI_Model {
    public function get_locations() {
        // 先修正SQL的拼写错误(你写的fro应该是from)
        $query = $this->db->query("Select bolgekodu, bolgeadi FROM your_table_name"); // 替换成实际表名
        // 返回查询结果,这里用result()会返回对象数组,或者用result_array()返回关联数组
        return $query->result();
    }
}

注意:记得把SQL里的your_table_name换成你实际的表名,还有你原来的SQL里fro是拼写错误,要改成FROM哦。

2. 在控制器中调用模型并传递数据到视图

你需要在对应的控制器方法里加载模型,调用方法获取数据,然后把数据传给视图。举个例子:

class Search extends CI_Controller {
    public function index() {
        // 加载模型
        $this->load->model('Search_model');
        // 调用模型方法获取数据
        $location_data = $this->Search_model->get_locations();
        // 把数据打包成数组,传给视图(这里的键名就是视图里要用的变量名)
        $data['locations'] = $location_data;
        // 加载视图,同时传递$data数组
        $this->load->view('include_files/search_inc', $data);
    }
}

这里要注意:

  • 控制器里传给视图的数组键名locations,在视图里对应的变量是$locations,不是$data!很多新手会搞混这一点。
  • 确保控制器正确加载了模型,并且视图路径是对的。

3. 在视图中正确使用变量并处理空数据

现在在你的search_inc.php视图里,你可以循环$locations变量了,同时最好先判断变量是否存在,避免再次出现Undefined的错误:

// 先检查变量是否存在且有数据
if (isset($locations) && !empty($locations)) {
    foreach ($locations as $location) {
        // 输出数据,比如:
        echo $location->bolgekodu . ' - ' . $location->bolgeadi . '<br>';
    }
} else {
    echo '没有找到任何位置数据';
}

如果你在视图里之前用的是$data,那肯定会报错,因为控制器传递的是$locations(对应数组里的键locations),所以要把视图里的变量名改成和控制器传递的键名一致。

为什么会出现这个错误?

  • 模型没返回数据:你的原模型方法只执行了查询,没有return结果,导致控制器拿不到数据。
  • 控制器没传递数据:如果控制器没把数据数组传给视图,视图里自然找不到对应的变量。
  • 变量名不匹配:控制器传递的键名和视图里用的变量名不一致,比如控制器传的是$data['locations'],视图里却用$data,这就会导致Undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:43:35