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
相关产品推荐
相关产品推荐

