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

CodeIgniter中无法通过控制器与模型取数据到视图展示的问题

解决CodeIgniter中控制器-模型-视图的数据传递与展示问题

看起来你的控制器代码没写完,而且大概率是在数据传递、模型查询或者视图渲染这几个环节出了问题。我一步步帮你排查和修正:

第一步:补全并修正控制器代码

你的控制器已经完成了数据获取,但缺少加载视图并传递数据的关键步骤,而且最好先判断数据是否存在,避免因空数组导致报错。修正后的控制器代码如下:

class Leads extends CI_Controller { 
    public function show($id) { 
        // 加载模型
        $this->load->model('leads_model'); 
        // 从模型获取指定ID的线索数据
        $leads = $this->leads_model->get_leads($id);

        // 先判断数据是否存在,避免访问不存在的数组键报错
        if (empty($leads)) {
            // 可以跳转到404页面或者自定义提示页
            show_404();
            return;
        }

        // 整理要传递给视图的数据(直接传整个数组更简洁,不用逐个赋值)
        $data['lead'] = $leads; 

        // 加载视图并传递$data数组
        $this->load->view('leads/show', $data); 
    }
}

第二步:确保模型leads_model的get_leads方法正确实现

模型里的查询逻辑要保证能返回正确的单条数据数组,示例代码如下:

class Leads_model extends CI_Model { 
    public function get_leads($id) { 
        // 强制转换ID为整数,防止SQL注入风险
        $id = (int)$id;
        // 查询指定ID的记录(假设你的数据库表名为`leads`,主键为`id`)
        $query = $this->db->get_where('leads', ['id' => $id]);
        
        // 返回单条记录的关联数组,无数据则返回空数组
        return $query->row_array(); 
    }
}

注意:如果你的数据库表名或主键不是leads/id,要对应修改代码中的字段。

第三步:在视图中正确渲染数据

假设你的视图文件是application/views/leads/show.php,可以这样安全地展示数据:

<h1>线索详情</h1>
<div class="lead-card">
    <p><strong>姓名:</strong> <?php echo htmlspecialchars($lead['name']); ?></p>
    <p><strong>邮箱:</strong> <?php echo htmlspecialchars($lead['email']); ?></p>
    <p><strong>联系方式:</strong> <?php echo htmlspecialchars($lead['contact']); ?></p>
    <p><strong>推荐来源:</strong> <?php echo htmlspecialchars($lead['referral']); ?></p>
    <p><strong>项目详情:</strong> <?php echo htmlspecialchars($lead['project_detail']); ?></p>
    <p><strong>备注:</strong> <?php echo htmlspecialchars($lead['note']); ?></p>
</div>

用htmlspecialchars()可以防止XSS攻击,让页面更安全。

常见问题排查清单

  • 检查模型文件名是否为leads_model.php(首字母小写,后缀.php),类名是否为Leads_model(首字母大写),CodeIgniter对模型命名有严格规范。
  • 确认application/config/database.php中的数据库配置正确,能正常连接到数据库。
  • 开启错误提示方便排查:在application/config/config.php中设置$config['log_threshold'] = 1;和$config['display_errors'] = TRUE;,生产环境记得关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:18:16