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

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的有效性

    1. 在控制器的create方法中添加调试代码,确认数据是否正常:
      var_dump($data_arr); exit;
      
      如果输出为空数组,要么是前端传递的JSON格式无效,要么是unset($data_arr['file'])后没有剩余有效字段。
    2. 检查前端newPost的字段名是否与post表的字段完全匹配,确保unset后仍有可插入的字段(比如title、content等)。
    3. 增加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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:23:20