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

CodeIgniter4中Controller向View传值失败,请求技术帮助

CodeIgniter 4 控制器传值到视图失败的问题排查

你遇到的问题主要有三个核心错误,逐个修正即可解决:

1. 控制器传值格式错误

CodeIgniter 4 的视图接收的是关联数组,数组的键就是视图中可直接访问的变量名。你当前直接把索引数组传给view()方法,视图无法识别$data变量,且索引数组的数字键也无法在视图中正常调用。

修正后的控制器代码:

class Home extends BaseController
{
    public function index()
    {
        $ProductModel = new Products();
        // 将查询结果包装成关联数组,键为视图中要用的变量名
        $data = [
            'productInfo' => $ProductModel->getBasicInfo(1)
        ];
        return view('testing_view', $data);
    }
}

2. 模型SQL查询的变量解析与安全问题

你用单引号包裹SQL语句,PHP不会解析单引号内的$id变量,导致SQL执行时会把$id当成字符串条件,无法查到目标数据,还存在SQL注入风险。同时未处理查询无结果的情况,会引发空指针错误。

修正后的模型代码:

getBasicInfo(int $id): array
{
    $db = $this->connectToDB();
    // 使用预处理语句,安全解析变量并防止注入
    $query = $db->query('SELECT productName, productDescription, productType FROM konnektrix_db.products WHERE productID = ? LIMIT 1', [$id]);
    $row = $query->getRow();
    
    // 处理无查询结果的情况,避免报错
    if (!$row) {
        return [];
    }
    
    // 返回关联数组,方便视图调用
    return [
        'name' => $row->productName,
        'description' => $row->productDescription,
        'type' => $row->productType
    ];
}

3. 视图变量访问错误

当前视图中<? $data; ?>既没有输出内容,也无法识别变量。需要使用PHP输出标签,并且调用控制器传入的关联数组键名。

修正后的视图代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Data testing view</title>
</head>
<body>
<h2>General product overview page</h2>
<?php if (!empty($productInfo)): ?>
    <h1><?= $productInfo['name'] ?></h1>
    <p><?= $productInfo['description'] ?></p>
    <p>Type: <?= $productInfo['type'] ?></p>
<?php else: ?>
    <p>No product found</p>
<?php endif; ?>
</body>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:25:21