我想在電影不存在時收到通知。這表示從數據庫中刪除電影的腳本。 這是什麼,我現在有一個部分:在使用預準備語句刪除之前檢查值是否存在
$title = $_POST["title"];
$delMovie = mysqli_prepare($link, "DELETE FROM movie WHERE title=?");
mysqli_stmt_bind_param($delMovie, "s", $title);
if (mysqli_stmt_execute($delMovie)) {
echo("Movie \"" . $title . "\" successfully deleted: ");
echo(mysqli_stmt_affected_rows($delMovie) . " rows affected");
} else {
echo("Error (" . mysqli_stmt_errno($delMovie) . "): ");
echo(mysqli_stmt_error($delMovie));
}
mysqli_stmt_free_result($delMovie);
mysqli_stmt_close($delMovie);
mysqli_close($link);
當影片不存在,但它仍然會返回:
Film "Movie1" successfully deleted: 0 rows affected
正如你所看到的,它不存在,但仍返回「成功」。我怎樣才能改變這種顯示:
Error: Movie does not exists in database
它成功返回,因爲查詢沒有失敗並顯示錯誤。沒有受到影響的行。 – 2014-10-07 20:45:58
爲什麼不只是將'mysqli_stmt_affected_rows($ delMovie)'存儲在一個變量中,並且如果== 0回顯出不同的消息。只要運行刪除查詢並且不刪除任何行就不會造成傷害。然後你只運行一個查詢,反正會更快。 – 2014-10-07 20:47:26
由於後者受到醜陋[競爭條件](http://en.wikipedia.org/)的限制,「刪除並查看是否有任何東西」刪除方法比「測試和條件刪除」方法好得多。 wiki/Race_condition)你的測試可能會失敗,但記錄稍後會出現。 – tadman 2014-10-07 20:49:51