使用CodeIgniter PHP展示数据库数据报错:未定义变量query求解决
解决CodeIgniter视图中“未定义变量query”的问题
这个「未定义变量query」的报错很典型,本质是你的视图在尝试使用一个控制器没传过来的变量,或者控制器里的变量根本没被正确赋值。我给你梳理下标准的CodeIgniter MVC实现流程,帮你解决这个问题:
1. 首先确保你有正确的模型(Model)
创建一个模型文件(比如application/models/Subuser_model.php),用来处理数据库查询:
<?php class Subuser_model extends CI_Model { public function __construct() { parent::__construct(); // 确保数据库连接已初始化 $this->load->database(); } // 获取所有子用户数据的方法 public function get_all_subusers() { // 替换成你的实际表名,比如这里假设表名为`subusers` $query = $this->db->get('subusers'); // 返回查询结果的对象数组 return $query->result(); } }
2. 在控制器(Controller)中调用模型并传递数据到视图
修改你的控制器文件(比如application/controllers/Subuser.php),加载模型、获取数据,再把数据传给视图:
<?php class Subuser extends CI_Controller { public function index() { // 加载刚才创建的模型 $this->load->model('subuser_model'); // 调用模型方法获取数据,赋值给$data数组的`query`键(对应视图里的变量名) $data['query'] = $this->subuser_model->get_all_subusers(); // 加载你的视图文件,把$data数组传过去 $this->load->view('your_view_file', $data); } }
3. 修正你的视图代码(添加容错判断)
在视图里先判断变量是否存在且有数据,避免空数据时报错:
<tbody> <?php if(isset($query) && !empty($query)): ?> <?php foreach($query as $row): ?> <tr> <td><?php echo $row->subuid; ?></td> <td><?php echo $row->uid; ?></td> <td><?php echo $row->fname; ?></td> <!-- 其他字段继续在这里添加 --> </tr> <?php endforeach; ?> <?php else: ?> <tr> <td colspan="3" style="text-align:center;">暂无数据</td> </tr> <?php endif; ?> </tbody>
常见排查要点
- 确认你的数据库配置已经在
application/config/database.php中正确设置,CodeIgniter能正常连接数据库 - 在控制器中可以临时加
var_dump($data['query']); exit;来查看是否真的获取到了数据 - 如果控制器里用的是其他变量名(比如
$data['subusers']),那视图里也要对应改成foreach($subusers as $row) - 确保模型里的表名和你数据库中的实际表名完全一致(注意大小写,部分数据库区分大小写)
内容的提问来源于stack exchange,提问作者user3397832
相关产品推荐
相关产品推荐

