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

CodeIgniter 4模型update()函数无法更新MySQL数据库求助

解决CodeIgniter 4.x模型update()函数不更新数据库的问题
  • 检查$temp数组的有效性
    • 确认$temp里的键名和数据库表字段名完全匹配,包括大小写(如果数据库是大小写敏感环境),比如数据库字段是phone,数组里不能写成Phone
    • 打印$temp确认有实际要更新的数据:var_dump($temp); exit;,如果数组为空或者所有值和数据库现有记录完全一致,update操作不会触发变更
  • 验证where条件的正确性
    • 确认$data['id']是有效存在的主键值,打印查看:var_dump($data['id']); exit;
    • 直接在数据库里执行SELECT * FROM your_table WHERE id = [你的$data['id']值],确认是否存在对应记录
  • 查看实际执行的SQL语句
    • 开启数据库调试,打印最后执行的SQL:
      $db = \Config\Database::connect();
      $outletUpdateModel->where('id',$data['id'])->set($temp)->update();
      echo $db->getLastQuery();
      exit;
      
      把打印出的SQL拿到数据库里直接执行,看是否有报错或者不生效的原因
  • 检查模型的$allowedFields设置
    • CI4模型默认需要指定允许更新的字段,否则会过滤掉所有字段导致无操作,在你的OutletUpdateModel里添加:
      protected $allowedFields = ['字段1', '字段2', ...]; // 替换成你要更新的实际字段
      
  • 关于save()函数的使用
    • save()是新增/更新二合一,必须传入包含主键(id)的数据才会执行更新,比如:
      $updateData = array_merge($temp, ['id' => $data['id']]);
      $outletUpdateModel->save($updateData);
      
    • 同样要确保模型的$allowedFields包含你要更新的字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:22:06