首页 > 文章列表 > ThinkPHP框架下POST请求数据保存失败:为何$paif_data变量无法写入MySQL JSON字段?

ThinkPHP框架下POST请求数据保存失败:为何$paif_data变量无法写入MySQL JSON字段?

379 2025-03-16

ThinkPHP框架下POST请求数据保存失败排查:JSON字段写入问题

ThinkPHP框架下POST请求数据保存失败:为何$paif_data变量无法写入MySQL JSON字段?

本文分析在使用FastAdmin框架进行POST请求时,$paif_data变量无法写入MySQL JSON字段,而$str变量却能成功写入的原因。

问题现象:使用Postman发送数据,$paif_data$str变量打印结果一致,但仅$str变量能成功保存数据到数据库,$paif_data变量则报错。数据库字段paif_data类型为JSON。

问题根源:虽然Postman预览显示两个变量值相同,但其内部数据结构可能存在差异。paiflib::submit函数可能期望接收标准JSON对象,而非已序列化的JSON字符串。$str变量成功保存,表明其格式符合数据库JSON字段的存储要求。

错误原因在于Postman发送的JSON数据格式不正确,导致paiflib::submit函数无法正确解析$paif_data变量。

解决方案:在Postman发送请求时,应直接发送JSON对象,而非JSON字符串。 正确的JSON数据格式应如下所示:

{
  "paif_data": {
    "name": "foo"
  }
}

这样,paiflib::submit函数就能正确接收和处理paif_data JSON对象,从而将数据保存到MySQL数据库。 问题在于POST请求中JSON数据的发送方式,修改Postman发送的数据格式为标准JSON对象即可解决问题。

来源:1741516041