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

MySQL删除不存在ID仍提示已删除,需实现ID存在性判断功能

解决删除员工时ID不存在的提示问题

先明确你代码里的几个核心问题:

  • mysqli_affected_rows()的参数传错了,它需要接收数据库连接对象$con,而非查询结果$result
  • 判断逻辑错误:删除存在的ID时,影响行数为1(ID是主键唯一),而非大于1;ID不存在时影响行数为0,此时应提示ID不存在,而非输出SQL错误
  • 存在SQL注入风险,直接拼接用户输入到SQL语句中非常危险

修正后的PHP代码

<?php 
if(isset($_POST['removeemployees']))
{
    $error = "";
    $employeeID = isset($_POST['employeeID']) ? trim($_POST['employeeID']) : "";

    if(empty($employeeID))
    {
        $error .= "员工ID不能为空";
    }

    if($error == "")
    {
        // 使用预处理语句防止SQL注入
        $sql = "DELETE FROM employees WHERE ID = ?";
        $stmt = mysqli_prepare($con, $sql);
        mysqli_stmt_bind_param($stmt, "i", $employeeID); // "i"表示参数为整数类型
        mysqli_stmt_execute($stmt);
        
        $affectedRows = mysqli_stmt_affected_rows($stmt);
        if($affectedRows == 1)
        {
            echo "记录已成功删除";
        }
        elseif($affectedRows == 0)
        {
            echo "该员工ID不存在于数据库中";
        }
        else
        {
            echo "删除记录出错: " . mysqli_error($con);
        }
        
        mysqli_stmt_close($stmt);
    }
    else
    {
        echo $error;
    }
}
?>

HTML代码(无需修改)

<div class="removeemployee">
    <h3> 删除员工 </h3>
    <p>员工ID</p>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input type="text" name="employeeID"><br>
    <br><input type="submit" name="removeemployees" value="提交信息">
    </form>
 </div>

关键修改说明

  1. 修复影响行数判断:改用mysqli_stmt_affected_rows($stmt)获取预处理语句的影响行数,参数为预处理语句对象,能准确拿到删除操作的实际影响记录数
  2. 新增ID不存在分支:当影响行数为0时,明确提示用户ID不存在,区分开真实的SQL错误
  3. 防SQL注入处理:通过预处理语句绑定参数,避免直接拼接用户输入到SQL中,提升代码安全性
  4. 简化ID获取逻辑:用三元运算符替代冗余的if-else判断,代码更简洁

你之前考虑的“从MySQL获取所有数据再对比输入ID”完全没必要,会浪费数据库资源,直接通过DELETE操作的影响行数就能高效判断ID是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:40:28