php Mysql不断删除写入的ID,但该ID在数据库中不存在

djmepvbi  于 2022-12-21  发布在  PHP
关注(0)|答案(1)|浏览(89)

我已经创建了一个HTML表单,你可以删除的工作人员只是把ID是直接连接到数据库。
当我第一次把ID,它会删除它,如果它存在,但即使它不存在,它仍然会说,它刚刚被删除,即使它从来没有存在。
下面是它的PHP部分

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

            $employeeID = "";
        }
        else
        {
            $employeeID = $_POST['employeeID'];
        }

        if(empty($employeeID))
            {
                // Empty Employee
                $error .= "employeeID Cannot be Empty";
            }

    //echo "Your Firstname is : $firstname and last name is : $lastname";

        if($error == "")
        {

            $sql = "DELETE FROM employees WHERE ID = $employeeID ";
            $result = mysqli_query($con, $sql);
            if(mysqli_affected_rows($result)  > 1)
            {
                echo "Record Deleted";
            }
            else
            {
                echo "Error Deleting record:".mysqli_error($con);
            }
            
            
        }
        else
        {
            echo $error;
        }
    }
  ?>

这是它的HTML部分,它很简单,工作正常。

<div class="removeemployee">
        <h3> Remove Employees </h3>
        <p>Employee 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="Submit Information">
        </form>
     </div>

我试着让它像这样工作:如果ID存在,您可以删除它,如果不存在,它应该说,这个ID是不存在的数据库或类似的东西。起初,我认为我必须收集所有的数据从Mysql然后比较它与输入的ID,并从那里去,但我不确定。

kzipqqlq

kzipqqlq1#

没有要删除的行不是错误。
如果有错误,mysqli_execute()返回false,而不是结果对象。
mysqli_execute()仅在查询是SELECT(或返回结果集的某一其它类型)时返回结果对象;对于修改查询,它只返回truefalsemysqli_affected_rows()的参数必须是连接,而不是返回值。

$sql = "DELETE FROM employees WHERE ID = ?";
$stmt = mysqli_prepare($con, $sql);
$stmt->bind_param("i", $employeeID);
$stmt->execute();
if(mysqli_affected_rows($con) > 1)
{
    echo "Record Deleted";
}
else
{
    echo "Employee ID does not exist";
}

我还展示了如何使用预准备语句重新编码以防止SQL注入。

相关问题