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

Codeigniter批量更新报错:Array转字符串及未知列问题求助

错误原因
  • 模型ubahAbsen方法中,直接调用$this->input->post('keterangan')和$this->input->post('ket')获取的是整个请求的数组,而非单个学生对应的字段值,数据库无法识别数组类型,因此抛出「Array to string conversion」错误。
  • 控制器已经循环处理每个学生并组装好单条更新数据,但模型里重复循环POST的id_siswa数组,还覆盖了控制器传入的$data,逻辑完全混乱。
修正后的控制器代码
$input = $this->input->post();
foreach ($input['id_siswa'] as $key => $id_siswa) {
    $data = [
        'id_siswa'     => $id_siswa,
        'id_mapel'     => $input['id_mapel'],
        'id_kelas'     => $input['id_kelas'],
        'time_in'      => time(),
        'tanggal'      => date("d"),
        'bulan'        => date("m"),
        'tahun'        => date("Y"),
        'keterangan'   => $input['keterangan'][$key],
        'ket'          => $input['ket'][$key]
    ];
    $this->guru_m->ubahAbsen($data);
}
redirect('gr/absensi');
修正后的模型代码
public function ubahAbsen($data)
{
    // 从传入的$data中提取需要更新的字段
    $updateData = [
        'keterangan' => $data['keterangan'],
        'ket'        => $data['ket'],
        'time_in'    => $data['time_in'],
        'tanggal'    => $data['tanggal'],
        'bulan'      => $data['bulan'],
        'tahun'      => $data['tahun']
    ];
    // 根据id_siswa执行更新
    $this->db->where('id_siswa', $data['id_siswa']);
    $this->db->update('absensi', $updateData);
}
更高效的批量更新优化(可选)

如果想减少数据库请求次数,可改成批量更新:

控制器代码

$input = $this->input->post();
$updateData = [];
foreach ($input['id_siswa'] as $key => $id_siswa) {
    $updateData[] = [
        'id_siswa'     => $id_siswa,
        'keterangan'   => $input['keterangan'][$key],
        'ket'          => $input['ket'][$key],
        'time_in'      => time(),
        'tanggal'      => date("d"),
        'bulan'        => date("m"),
        'tahun'        => date("Y")
    ];
}
$this->guru_m->ubahAbsenBatch($updateData);
redirect('gr/absensi');

模型代码

public function ubahAbsenBatch($updateData)
{
    $this->db->update_batch('absensi', $updateData, 'id_siswa');
}

注:update_batch方法会根据第三个参数(这里是id_siswa)作为匹配条件,批量执行更新操作,比循环单条更新更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:32