PHP+MySQL待办清单添加删除按钮点击无响应无报错求助
问题根因
核心错误为前后端传递的待删除ID参数名不匹配:
前端删除链接中定义的ID参数名为item,但你的后端删除逻辑中使用$_GET['id']接收参数,无法获取到正确的待删除条目ID,导致DELETE语句的查询条件永远匹配不到数据,因此没有删除动作执行也无报错。
修复方案
二选一即可:
- 方案1:修改后端
delete.php中的参数接收逻辑,将参数名改为和前端一致的item - 方案2:修改前端删除链接的参数名,将
item改为和后端一致的id
修正后的delete.php示例代码
<?php require_once 'app/init.php'; // 新增isset判断避免未传参数时报警告 if(isset($_GET['delete']) && isset($_GET['item'])){ $id = $_GET['item']; // 修改为接收前端传递的item参数 $deleteQuery = $db->prepare(" DELETE FROM todo_list WHERE id = :id AND user = :user LIMIT 1 "); $deleteQuery->execute([ 'id' => $id, 'user' => $_SESSION['user_id'] ]); // 可临时添加以下代码调试,确认删除行数,调试完成后删除即可 // echo '成功删除行数:' . $deleteQuery->rowCount(); // exit; } header('Location: index.php'); ?>
其他可选排查项
如果修改参数名后仍然无法删除,可按以下顺序排查:
- 确认
app/init.php中已经调用了session_start(),否则$_SESSION['user_id']不存在,会导致删除条件匹配失败 - 确认数据库中
todo_list表的user字段存储的值和$_SESSION['user_id']的类型、值完全一致,避免字符串/数字类型不匹配导致的条件失效 - 临时注释
header('Location: index.php')代码,打开PHP错误显示,查看是否有数据库连接、语法相关的报错信息
内容的提问来源于stack exchange,提问作者jsuke06
相关产品推荐
相关产品推荐

