当我需要使用 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()
请使用该功能。