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

AJAX提交表单后SQL的gameId字段始终为0的问题排查

问题排查与修复方案

你的问题核心是AJAX请求的参数格式错误,导致PHP无法正确获取liked参数的值,最终插入数据库时空值被转为0。下面是具体的排查和修复步骤:

1. 修正AJAX的data参数格式

你当前的AJAX代码直接传递了输入框的字符串值:

data: liked,

这种写法只会把原始字符串(比如"123")发送给服务器,PHP的$_POST无法识别这是liked字段的值。必须传递键值对格式的数据:

$(document).ready(function () {
  $("#likeForm").submit(function (event) {
    var liked = $("#likeInput").val();
    $.ajax({
      type: "POST",
      url: "like.php",
      // 改成键值对,键名要和PHP里$_POST的键一致
      data: { liked: liked },
    }).done(function (data) {
      console.log(data);
    });
    event.preventDefault();
  });
});

更简洁的写法:序列化整个表单

如果表单有多个字段,直接用serialize()方法序列化表单数据,避免手动获取每个字段:

$(document).ready(function () {
  $("#likeForm").submit(function (event) {
    $.ajax({
      type: "POST",
      url: "like.php",
      data: $(this).serialize(), // 直接序列化表单
    }).done(function (data) {
      console.log(data);
    });
    event.preventDefault();
  });
});

2. 优化PHP的参数绑定(可选但推荐)

如果你的user_id和gameId是数据库中的数值类型(比如INT),绑定参数时应该用"ii"而不是"ss",这样更匹配数据类型,避免类型转换问题:

$stmt->bind_param("ii", $userId, $like);

3. 添加调试代码排查问题

可以在PHP开头添加调试语句,查看服务器实际接收到的POST数据:

var_dump($_POST); // 查看POST参数是否正确
exit;

执行后在浏览器控制台查看输出,确认liked参数是否存在并正确取值。

4. 恢复原始的$_POST取值写法

修复AJAX参数后,你可以恢复最初的写法(去掉注释),因为此时$_POST['liked']已经能正确获取值:

$like = $_POST['liked'];

当然保留isset判断也没问题,能避免未传参时的报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:55:16