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

CodeIgniter3调用未定义方法getMahasiswa()报错排查请求

问题分析与解决方案

嘿,我看到你遇到的问题了,咱们一步步来排查和解决:

1. 直接报错的原因:模型中缺少getMahasiswa()方法

你在控制器Mahasiswa.php的form_update()方法(第35行)调用了$this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));,但你的Mahasiswa_model.php里根本没有定义这个方法,这就是PHP抛出「Call to undefined method」错误的直接原因。

解决办法:在模型中添加getMahasiswa()方法

打开Mahasiswa_model.php,新增一个根据nim获取单条学生数据的方法:

function getMahasiswa($id) {
    $this->db->where('nim', $id);
    $query = $this->db->get('mhs');
    // 返回单条记录对象,方便视图直接调用属性(比如$mhs->nama)
    return $query->row();
}

2. 更新功能失效的隐藏问题:模型update()方法未执行数据库操作

你当前的模型update()方法只定义了要更新的$data数组,但没有调用CodeIgniter的数据库更新函数,所以即使表单提交成功,数据库里的数据也不会发生变化。

解决办法:完善模型的update()方法

修改Mahasiswa_model.php中的update()方法,补充数据库更新的逻辑:

function update($id, $form) {
    $data = array(
        'nim' => $form[0],
        'nama' =>$form[1],
        'alamat' => $form[2],
    );
    // 新增以下两行:指定更新条件并执行更新
    $this->db->where('nim', $id);
    $this->db->update('mhs', $data);
}

额外优化建议(可选)

为了让代码更易维护,建议把表单提交的参数改成关联数组(而不是当前的索引数组),比如在提交表单时给input设置name="nama"、name="nim"、name="alamat",然后在控制器中用$this->input->post()直接获取关联数组,模型里也可以更清晰地对应字段:

// 控制器submit方法示例
$post_data = array(
    'nim' => $this->input->post('nim'),
    'nama' => $this->input->post('nama'),
    'alamat' => $this->input->post('alamat')
);
$this->Mahasiswa_model->add($post_data);

// 模型add方法对应修改
function add($arg) {
    $this->db->insert('mhs', $arg);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:44:04