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

PHP编辑按钮执行成功但数据未更新问题排查请求

问题分析与修复方案

你的代码存在几个关键问题,导致数据没有被实际更新:


1. 占位符包含无效空格

PDO的命名占位符不允许包含空格,你的SQL语句中: quantity和: price的空格会导致PDO无法正确识别占位符,参数绑定失败,最终执行的更新语句没有替换实际值。

修复:
去掉占位符和数组键中的空格:

$update = "UPDATE products SET quantity=:quantity, price=:price WHERE id=:id LIMIT 5"; 
$data = [
  ':quantity' => $quantity,
  ':price' => $price,
  ':id' => $product_id
];

2. 变量名不匹配(未定义变量)

代码中存在多处变量名拼写或定义不一致的问题,导致绑定的参数值为null,无法正确更新数据:

  • 你从表单获取的是$quanity = trim($_POST["quanity"]);,但绑定参数时使用了未定义的$quantity(多了一个字母n);
  • 你定义了$product_price = trim($_POST["productprice"]);,但绑定参数时使用了未定义的$price。

修复:
统一变量名,确保定义和使用一致:

// 修正变量名拼写
$quantity = trim($_POST["quanity"]);
$product_price = trim($_POST["productprice"]);

// 绑定正确的变量
$data = [
  ':quantity' => $quantity,
  ':price' => $product_price,
  ':id' => $product_id
];

另外建议修正表单中的name="quanity"为name="quantity"(拼写正确),避免后续混淆。


3. 额外优化建议

  • 添加rowCount()检查,确认更新是否真正生效,避免误判:
    $statement->execute($data);
    if ($statement->rowCount() === 0) {
        header("Location:products.php?products=No product updated (ID not found or values unchanged)");
        exit;
    }
    
  • 在文件开头开启严格模式,更早发现未定义变量等错误:
    declare(strict_types=1);
    
  • 修正提示文本的语法错误:将product has being successfully updated改为product has been successfully updated。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:53:18