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

点击删除按钮无法删除数据库中购物车行的原因排查

点击删除按钮后数据库对应行未被删除的可能原因

先贴出相关代码:

PHP处理逻辑:

<?php

if (isset($_POST['delete_button'])) {

  $id = $_POST['id'];

  $stmt = $pdo->prepare("DELETE FROM user_favourites WHERE user_fav_id = :user_fav_id");

  $stmt->bindParam(':user_fav_id', $id);

  $stmt->execute();

  header("Location: index.php?p=account");
  exit();
}
?>

表单按钮代码:

<form method="POST">
    <input type="hidden" name="id" value="<?php echo $fav['user_fav_id'] ?>">
    <button type="submit" name="delete_button">Delete</button>
</form>

可能的原因:

  • 隐藏字段id没传对值:检查$fav['user_fav_id']是否真的拿到了正确的记录ID。可以在表单里临时加一行<?php echo $fav['user_fav_id'] ?>,看看页面上显示的是不是数据库里存在的user_fav_id值,会不会是空的或者错误的。

  • SQL执行出错但没被发现:当前代码没处理execute()的失败情况,直接跳转了。可以在$stmt->execute()后面加个判断,比如:

    if (!$stmt->execute()) {
        print_r($stmt->errorInfo());
        exit;
    }
    

    这样就能看到具体的错误信息,比如表名写错、字段名不对,或者数据库权限不够删不了数据。

  • 表名/字段名和实际数据库不匹配:确认数据库里的表确实叫user_favourites,字段确实是user_fav_id,注意大小写——比如Linux环境下MySQL的表名是区分大小写的,要是你代码里写的是User_Favourites但实际表是user_favourites就会出错。

  • PDO连接有问题:确保$pdo这个连接实例是正确连到目标数据库的,有没有连错库,或者连接的时候就失败了但没报错。

  • 提交请求没触发删除逻辑:检查表单提交的POST数据里有没有delete_button这个键。可以在PHP代码开头加var_dump($_POST);,看看提交后输出的内容里是不是包含delete_button和id,会不会是按钮的name属性拼写错了。

  • 事务没提交:如果之前代码里开启了PDO事务(比如$pdo->beginTransaction()),但没执行$pdo->commit(),那DELETE操作会被回滚,数据库里就看不到变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:05:21