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

如何将PHP中mysqli_fetch_array代码转换为CodeIgniter实现?

把原生mysqli查询转成CodeIgniter实现的方案

没问题,这就帮你把这段原生mysqli的数据库查询代码转换成CodeIgniter框架的实现,同时还会兼顾框架的安全规范和最佳实践~

先帮你理清楚原代码的核心功能:它会计算tkelas表中kelas_id的总数,除以tuser表中对应matpel_id = $idmatpel的user_id总数,最后对结果做向上取整,得到最终的jumlah值。

下面给你两种可行的实现方式:

方式一:使用CodeIgniter Query Builder(推荐)

这种方式更贴合CI的开发规范,可读性更强,也更容易维护:

// 第一步:先获取对应matpel_id的用户总数
$user_count = $this->db->where('matpel_id', $idmatpel)->count_all_results('tuser');

// 处理除数为0的边界情况(避免运行报错)
if ($user_count === 0) {
    $cocok_kelas_maksimal = ['jumlah' => 0]; // 你可以根据业务需求调整这个默认值
} else {
    // 第二步:计算kelas总数除以用户总数的向上取整值
    // 第二个参数false是告诉CI不要转义这个SELECT语句里的计算表达式
    $this->db->select('CEIL(COUNT(kelas_id)/' . $user_count . ') as jumlah', false);
    $query = $this->db->get('tkelas');
    
    // 获取结果数组,和原代码的mysqli_fetch_array效果一致
    $cocok_kelas_maksimal = $query->row_array();
}

方式二:使用原生查询(保留原SQL结构)

如果你想尽量保留原SQL的结构,可以用CI的原生查询方法,同时通过参数绑定避免SQL注入风险:

// 用?作为占位符,后面传入参数数组,CI会自动处理转义
$sql = "SELECT CEIL(count(kelas_id)/(select count(user_id) from tuser where matpel_id = ?)) as jumlah from tkelas";
$query = $this->db->query($sql, [$idmatpel]);

// 获取结果数组
$cocok_kelas_maksimal = $query->row_array();

两种方式最终得到的$cocok_kelas_maksimal都是包含jumlah键的关联数组,和原代码的输出效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:16