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

PHP删除功能异常:无法删数据且页面无响应,请求排查问题

问题排查与修复方案

我帮你找到了导致删除功能失效、页面卡住的几个核心问题,咱们一步步来解决:

1. 参数接收错误(最初刷新不删数据的根源)

你的删除按钮链接传递的参数是 delete:

<a class="btn btn-danger" name="delete" href="incl/process.php?delete=<?php echo $row['id']; ?>">DELETE<i class="icon_close_alt2"></i></a>

但在 process.php 里,你错误地去获取 $_GET['id']:

$id = $_GET['id'];

这里应该改成获取 $_GET['delete'],否则 $id 会是 null,数据库找不到对应记录,自然删不掉数据。

2. 数据库连接变量混用(页面卡住的原因)

在 process.php 中,你用 $conn = mysqli_connect(...) 建立了数据库连接,但后续执行预处理语句时,却调用了未定义的 $mysqli 变量:

$stmt = $mysqli->prepare("DELETE FROM room_details WHERE id = ?");

这里必须使用你已经创建的 $conn 变量,否则会触发致命错误,导致页面卡在 process.php 无响应。

3. 补充错误处理(可选但推荐)

为了方便后续排查问题,建议在代码中添加错误处理逻辑,比如检查预处理语句是否创建成功,以及捕获执行过程中的错误。


修正后的 process.php 代码

<?php
// 建立数据库连接
$conn = mysqli_connect("localhost", "blog", "0000", "blog");
if (mysqli_connect_errno()) {
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

if(isset($_GET['delete'])) {
    // 正确接收参数
    $id = $_GET['delete'];
    
    // 使用正确的连接变量创建预处理语句
    $stmt = $conn->prepare("DELETE FROM room_details WHERE id = ?");
    if (!$stmt) {
        die("Prepare failed: " . $conn->error);
    }
    
    // 绑定参数并执行
    $stmt->bind_param('i', $id);
    if (!$stmt->execute()) {
        die("Execute failed: " . $stmt->error);
    }
    
    $stmt->close();
    $conn->close();
    
    // 跳转回列表页
    header("Location: rooms.php");
    exit; // 确保后续代码不执行
}
?>

额外提示

  • 建议使用 header("Location: rooms.php") 直接跳转,比 Refresh 更高效,且要确保跳转前没有任何输出(包括空格、换行)。
  • 确认你的 room_details 表中确实存在名为 id 的主键字段,且类型为整数,否则绑定参数时会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:03:14