使用多个选择器删除 MySQL 记录


delete a mysql record using multiple selectors

当我需要使用 WHERE 子句选择两个同时列时,我正在尝试删除 MYSQL 数据库中的记录:

 $result3 = mysqli_query($con, " DELETE FROM Waiting WHERE ToUser='$ToEmail' AND ImageID='$ToEmailDB' ");
    if ($result3==false) {
        echo "No images waiting for " . $ToEmail . " for image " . $ToEmailDB;
    }
    else {
        echo "Image and record deleted for " . $ToEmail . " for image " . $ToFileName . ".jpg and record " .                   $GuessImageID;
    }

当我执行此语句时$result3 returns true但该条目未被删除。我需要更改哪些格式? 字符串回显回表中输入的正确数据。

不应该是,

"DELETE from Waiting WHERE ToUser = '" . $ToEmail . "' AND ImageID = '" . $ToEmailDB . "'"
$result3 = mysqli_query($con, "DELETE FROM Waiting WHERE ToUser='".$ToEmail."' AND ImageID='".$ToEmailDB."' ");

如果 SQL 查询成功执行,查询将返回 true,即使 DELETE 未删除数据库中的任何行也是如此。

http://php.net/manual/en/mysqli.affected-rows.php

要回答您的问题,您需要找到受影响的行数

$result3 = mysqli_query($con, " DELETE FROM Waiting WHERE ToUser='$ToEmail' AND ImageID='$ToEmailDB' ");
if (!$result3) {
    echo "A database error occurred";
}
else if (mysqli_affected_rows($con) == 0) {
    echo "No images waiting for " . $ToEmail . " for image " . $ToEmailDB;
}
else {
    echo "Image and record deleted for " . $ToEmail . " for image " . $ToFileName . ".jpg and record " . $GuessImageID;
}
如果

查询成功执行,则始终返回TRUE。仅在查询失败时,它返回FALSE 根据PHP文档:

 mysqli_query() Returns FALSE on failure. For successful SELECT, SHOW, 
 DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.
 For other successful queries mysqli_query() will return TRUE.

来自Moby04的评论

如果要检查某些内容是否实际被删除mysqli_affected_rows()请使用该功能。