2013-04-09 42 views
0

我有這樣的SQL代碼SQL計算爲真時,它不應該

$passwordQuery = mysql_query("UPDATE `Medarbejder` SET `password` = '$password' WHERE `login` = '$login' AND `password` = '$oldPassword'")or die(mysql_error()); 
      if($passwordQuery){ 

而且不管$舊密碼等於password與否,它的計算結果爲真實的,這是相當煩人,我想不出爲什麼。

回答

1

如果你想檢查受影響的行數,你可以在你的PHP代碼中使用mysql_affected_rows

For Reference

+0

是的,修復它,非常感謝:) – 2013-04-09 23:27:00

0

我可能是錯的,但即使沒有找到記錄,您的更新也不會失敗,他只會更新任何內容! :-)

+0

好感謝? :) – 2013-04-09 23:21:10

2

我認爲mysql_query將返回TRUE,不管它是否更新行。它只能在錯誤返回FALSE按說明書說

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等, 的mysql_query()返回TRUE或FALSE的成功錯誤。

我想你想要的是檢查更新計數以及 - 除了錯誤檢查

+0

噢好吧.. derp,謝謝:)只會快速嘗試:) 你知道一種方法來檢查它是否實際更新嗎? – 2013-04-09 23:20:22

0

做這樣的:)你知道的方式來實際檢查,如果它更新的東西,然後

$passwordQuery = mysql_query("UPDATE `Medarbejder` SET `password` = '$password' WHERE `login` = '$login' AND `password` = '$oldPassword'")or die(mysql_error()); 
     if(mysql_affected_rows()==0){ 
     //alternative to false return of query 
     } 
     else if(mysql_affected_rows()>0){ 
     //alternative to true return of query 
     } 
+0

'mysql_affected_rows()' 用於返回由於當前函數或處理塊中最近處理的查詢而發生更改的行數。 如果密碼和/或用戶名不相等,則此函數將返回0,否則返回大於0的任何數字。 – 2013-04-09 23:29:44