[英]if mysql_query with &&
如果要刪除2個表中的行,我試圖獲得成功的結果,但是我的查詢僅執行第一個查詢,然后將結果恢復為成功,我該如何處理?
if (mysql_query("DELETE FROM ex_test_taken WHERE userid1 = '$userid2' AND testid1 = '$tid2'") && ("DELETE FROM ex_answer WHERE name = '$userid2' AND testname = '$tid2'")) {
echo "Sucesfull";
} else {
echo "Failed";
}
("DELETE FROM ex_answer WHERE name = '$userid2' AND testname = '$tid2'")
應為:
mysql_query("DELETE FROM ex_answer WHERE name = '$userid2' AND testname = '$tid2'")
普通的非空字符串始終求值為true。
您的代碼是:
if (
mysql_query("DELETE FROM ex_test_taken WHERE userid1 = '$userid2' AND testid1 = '$tid2'")
&& ("DELETE FROM ex_answer WHERE name = '$userid2' AND testname = '$tid2'")
)
因此,您基本上是在運行一個查詢...請嘗試:
if (
mysql_query("DELETE FROM ex_test_taken WHERE userid1 = '$userid2' AND testid1 = '$tid2'")
&&
mysql_query("DELETE FROM ex_answer WHERE name = '$userid2' AND testname = '$tid2'")
)
您應該注意,如果正確執行DELETE
語句,則mysql_query()返回true
。 “正確執行”與“實際上刪除任何行”不同。 因此,除非您的查詢錯誤(語法錯誤,mysql不知道表/ cols),否則此查詢將始終返回true
。
如果您想知道是否有任何數據被修改(在您的情況下已刪除),請使用mysql_affected_rows() 。
您應該在傳遞給mysql的任何數據上使用mysql_real_escape_string() 。
<?php
$success =
mysql_query('DELETE FROM ex_test_taken WHERE userid1 = "' . mysql_real_escape_string($userid2) . '" AND testid1 = "' . mysql_real_escape_string($tid2) . '"')
&& mysql_affected_rows()
&& mysql_query('DELETE FROM ex_answer WHERE name = "' . mysql_real_escape_string($userid2) . '" AND testname = "' . mysql_real_escape_string($tid2) . '"')
&& mysql_affected_rows();
if ($success) {
// DELETEd data in both queries
} else {
// did not DELETE any data in either query
}
您可能還希望研究PDO來替換您過時的mysql_ *東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.