CodeIgniter取数正常但视图报Undefined variable: info错误
解决CodeIgniter中"Undefined variable: info"的问题
嘿,我瞅了你的代码,虽然数据能正常显示,但出现Undefined variable: info的报错,这多半是代码里的几处小疏忽导致的,咱们一步步来搞定它:
首先揪出Controller里的无效代码
你看这段Controller代码:
public function home() { $this->load->model('Mymodel'); $this->Mymodel->result(); // 这行是多余的! $data['info'] = $this->Mymodel->database(); $this->load->view('home',$data); }
你调用了$this->Mymodel->result();,但你的Model里根本没有定义result()方法,这行不仅没用,还会触发额外的错误,直接删掉它就好。
给Model做个小优化(可选但推荐)
你的Model代码可以简化一下,CodeIgniter提供了更简洁的数据库查询写法,而且建议你在application/config/autoload.php里把数据库库设为自动加载($autoload['libraries'] = array('database');),这样就不用每次在Model里手动加载了:
public function database() { return $this->db->get('info')->result_array(); }
View里加个保险,避免变量未定义
虽然你已经把$info传给了View,但为了彻底杜绝这类报错,建议在View里使用$info之前先判断它是否存在且是数组:
<?php $u = 0; // 先确认变量存在再循环 if (isset($info) && is_array($info)) { foreach ($info as $item) { // 你的循环内容 echo $item['xxx']; // 替换成你的实际字段名 $u++; } } ?>
最后给Controller加个兜底判断(可选)
如果担心数据库查询返回的结果异常,也可以在Controller里给$info加个兜底,确保它至少是个空数组:
public function home() { $this->load->model('Mymodel'); $data['info'] = $this->Mymodel->database() ?? []; // 用空合并运算符兜底 $this->load->view('home',$data); }
这样调整之后,既保留了数据正常显示的功能,也能彻底解决Undefined variable: info的报错啦~
内容的提问来源于stack exchange,提问作者Rohit Kashyap
相关产品推荐
相关产品推荐

