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

PHP POST传值前端正常提交 触发MySQL 1048空值错误被数据库拒绝

问题排查与修复方案


1. 语法错误直接导致逻辑判断失效

你代码中所有修改$bandera状态的语句都用了比较运算符==,而非赋值运算符=,相当于这几行代码完全没生效,就算数据库操作失败,$bandera永远保持初始值true,最后一定会返回成功,但实际数据库操作已经出错:

// 错误写法
$bandera == false;
// 正确写法
$bandera = false;

2. POST参数接收失败的常见原因

你用的是CodeIgniter框架的$this->input->post()方法,该方法只能读取Content-Type: application/x-www-form-urlencoded或multipart/form-data格式的请求数据:

  • 如果前端发送的是application/json格式的请求,该方法无法读取参数,会返回null,需要手动解析输入流:
    $json = file_get_contents('php://input');
    $postData = json_decode($json, true);
    
  • 建议先在方法最开头打印所有接收的参数校验是否拿到有效值,再往下执行:
    // 调试用,打印所有POST参数和你组装的$data,确认参数是否正常
    var_dump($this->input->post());
    var_dump($data);
    exit;
    

3. 数据库查询逻辑错误

你插入证据记录后,用eCodReporte和dRegistro作为条件查询刚插入的记录,时间精度到秒,一旦插入和查询的执行时间跨秒,就会查询不到记录,导致后续逻辑直接走失败分支。正确做法是插入后直接获取自增主键ID:

// 插入完成后直接拿插入ID,不需要再按时间查询
$insReporteEvidencia = $this->Inserts->insReporteEvidencia($data); 
$insertId = $this->db->insert_id();

4. 可选优化点

  • 入库前增加必填参数非空校验,避免把空值传给数据库触发报错
  • 多文件上传的文件名要增加唯一标识(比如随机字符串、循环下标$i),避免同一秒上传的文件因为文件名重复被覆盖

内容的提问来源于stack exchange,提问作者JUANPABLODEJESUS FIGUEROA JARA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:36:04