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

PHP中如何实现删除链接?我的删除功能代码存在哪些问题?

代码中的错误及修复方案
  • 删除链接传递的ID无效
    循环里的$id是你自定义的自增序号,并非数据库表book的主键BID。用这个序号作为删除条件匹配BID,根本找不到对应的数据行,自然无法完成删除。
    修复:传递数据库中真实的BID:

    echo "<td><a href='view_books.php?id={$row["BID"]}'>Delete</a></td>";
    
  • 权限判断逻辑完全颠倒
    当前代码中if(!isset($_SESSION["AID"]))的逻辑是:管理员未登录时才执行删除,这完全违背权限控制的初衷——应该是管理员登录后才能执行删除操作,未登录则跳转至登录页。
    修复:修正条件判断:

    if(isset($_SESSION["AID"])) {
        // 执行删除逻辑
    } else {
        header("location:alogin.php");
        die();
    }
    
  • 存在严重SQL注入风险
    直接将$_GET['id']拼接进SQL语句,恶意用户可构造特殊值执行任意SQL操作,导致数据库被破坏。
    修复:使用mysqli预处理语句:

    $id = $_GET['id'];
    $stmt = $conn->prepare("DELETE FROM `book` WHERE `BID` = ?");
    $stmt->bind_param("i", $id); // 若BID为字符串类型,替换为"s"
    $stmt->execute();
    $stmt->close();
    
  • 删除后跳转逻辑不合理
    删除完成后跳转到登录页不符合正常流程,管理员需要看到删除后的列表结果。
    修复:跳转回书籍列表页面:

    header("location:你的书籍列表页面路径.php");
    die();
    
  • 缺少错误检查机制
    未判断删除操作是否执行成功,无法排查删除失败的具体原因。
    修复:添加错误检查(以预处理语句为例):

    if(!$stmt->execute()) {
        echo "删除失败:" . $conn->error;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:06:27