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

CodeIgniter中Error Number:1048报错问题求助

Error Number: 1048 问题解决方案(CodeIgniter项目)

错误本质

Error 1048是MySQL核心报错,明确指向你试图向数据库中标记为NOT NULL的字段插入空值——哪怕你视觉上填了表单,实际提交到后端的数据仍存在缺失。

排查修复步骤

  • 核对字段一致性
    确认视图entry.php中表单控件的name属性、控制器Absensi.php接收的字段名、数据库表的字段名三者完全匹配(包括大小写,部分MySQL环境区分大小写)。比如数据库字段是nik,表单写NIK、后端用$this->input->post('nik')就会取不到值,触发空值报错。

  • 调试提交数据
    在Absensi.php的表单处理方法开头添加调试代码,确认实际接收到的表单数据:

    var_dump($this->input->post());
    exit;
    

    运行后查看输出,找出值为NULL或未出现在数组中的字段,这就是问题根源。

  • 前后端双重校验必填项

    • 前端:给表单必填字段添加required属性,阻止用户空提交。
    • 后端:用CodeIgniter的表单验证类做二次校验:
      $this->form_validation->set_rules('nik', 'NIK', 'required');
      $this->form_validation->set_rules('nama', '姓名', 'required');
      // 其他必填字段依次添加规则
      
      if (!$this->form_validation->run()) {
          $this->load->view('entry');
          return;
      }
      // 校验通过再执行插入操作
      
  • 调整数据库字段设置
    如果某些字段允许为空,可在数据库中将其修改为允许NULL,或设置默认值(比如空字符串''),避免无值插入时触发报错。

  • 确认表单提交配置
    确保表单的method属性为post,控制器用$this->input->post()接收数据;若涉及文件上传,表单需添加enctype="multipart/form-data"属性。

快速定位技巧

从你提供的错误截图中,报错信息会明确指出哪个字段cannot be null,直接针对该字段检查表单提交、后端接收的全流程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:33:20