某處我做錯了事,我的查詢結果爲true而不是false。在我的表中,id 246確實存在,但在表中lev爲零。我做錯了什麼,這個查詢應該導致錯誤。它回聲成功,但不更新表格。在php中的mysql查詢計算結果爲true
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '3'")) {
echo "success";
} else {
echo "fail";
}
某處我做錯了事,我的查詢結果爲true而不是false。在我的表中,id 246確實存在,但在表中lev爲零。我做錯了什麼,這個查詢應該導致錯誤。它回聲成功,但不更新表格。在php中的mysql查詢計算結果爲true
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '3'")) {
echo "success";
} else {
echo "fail";
}
從docs:
對於SELECT,SHOW,描述,解釋等語句返回 結果集,請求mysql_query()成功返回資源,或在 錯誤時返回FALSE。
對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等, mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。
返回的結果資源應該傳遞給mysql_fetch_array(), 和其他函數來處理結果表,來訪問 返回的數據。
使用mysql_num_rows()來找出有多少行被返回的 SELECT語句或mysql_affected_rows()函數來找出有多少行 受到影響由DELETE,INSERT,REPLACE或UPDATE語句。
請勿使用mysql_query
來檢查您是否確實更新了某些行。改爲使用mysql_affected_rows()
。
你沒有做錯什麼:因爲它是正確執行mysql_query
語句返回true!
這並不意味着數據庫中的任何行都會更新。
從您的描述中,它聽起來像查詢正在運行,但沒有做任何更改。正如其他人所指出的那樣,這是預期的行爲。
您還表示,ID爲246的記錄的lev爲零。這說明更新失敗的原因。你只更新與編號246的記錄,如果列弗已被設置爲3,根據您的情況,下面的任一可能會更好地爲您:
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '0'")) {
echo "success";
} else {
echo "fail";
}
或忽略當前狀態列弗完全:
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246'")) {
echo "success";
} else {
echo "fail";
}
好的謝謝我現在明白了。當我更新記錄時,我的印象是真實的。 – Wilest