CodeIgniter3插入文章数据报错:需用set()方法更新条目,注册功能正常
解决CodeIgniter 3插入文章时报错"You must use the 'set()' method to update an entry"的问题
检查Post_model的$table属性是否正确配置
你的MY_Model依赖$this->table指定目标数据表,用户注册功能正常说明对应的User_model已正确设置$table属性,但Post_model大概率遗漏了该配置。打开Post_model文件,确保添加正确的表名定义:class Post_model extends MY_Model { public $table = 'post'; // 需与phpMyAdmin中的表名完全一致 // 其他业务代码 }若
$table为空或指向错误表,CI无法识别插入目标,会触发该异常。验证$data_arr的有效性
- 在控制器的
create方法中添加调试代码,确认数据是否正常:
如果输出为空数组,要么是前端传递的JSON格式无效,要么是var_dump($data_arr); exit;unset($data_arr['file'])后没有剩余有效字段。 - 检查前端
newPost的字段名是否与post表的字段完全匹配,确保unset后仍有可插入的字段(比如title、content等)。 - 增加JSON解析校验,避免无效数据传入模型:
$data_arr = json_decode($input_data, true); if (json_last_error() !== JSON_ERROR_NONE) { echo 'invalid_json'; return; }
- 在控制器的
重置数据库查询状态
若之前的数据库操作残留了未完成的查询,可能导致CI数据库类异常。在模型的insert_data方法中添加重置逻辑:function insert_data($data) { $this->db->reset_query(); // 清除之前的查询残留 $this->db->insert($this->table, $data); return $this->db->affected_rows(); }
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

