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
相关产品推荐
相关产品推荐

