直接用update()方法指定主键id即可更新,无需先查再改;ci3用where('id',$id)->update('table',$data),ci4用$model->update($id,$data),主键非'id'时需显式配置。

直接用 update() 方法指定主键 ID 即可,无需先查再改。
基础写法(推荐)
CodeIgniter 3 和 4 都支持通过主键 ID 快速更新,最简方式是把 ID 当作第一个参数传给 update():
- CI3:在模型中调用
$this->db->where('id', $id)->update('table_name', $data) - CI4:使用实体或 Query Builder,如
$model->update($id, $data)(前提是主键字段名为id且已配置)
CodeIgniter 4 示例(最简)
假设你有一个 UserModel,主键是 id:
$userModel = new UserModel(); $userModel->update(123, ['name' => '张三', 'email' => 'zhang@example.com']);
✅ 自动识别 id 字段,生成 UPDATE users SET ... WHERE id = 123
CodeIgniter 3 示例(一行搞定)
不依赖模型,直接用 DB 类:
$this->db->where('id', 123)->update('users', ['name' => '张三', 'email' => 'zhang@example.com']);
✅ 无需手动拼 SQL,安全防注入,语义清晰
注意点
确保主键字段名匹配,否则需显式指定:
- CI4 中若主键不是
id(比如叫user_id),需在模型中设置protected $primaryKey = 'user_id'; - CI3 中
where()的字段名必须和数据库一致,大小写敏感(取决于数据库配置) - 更新前不校验数据是否存在,如需判断影响行数,可用
$this->db->affected_rows()(CI3)或$model->getAffectedRows()(CI4)











