2010-05-27 31 views
0

$sql = "UPDATE....";如何知道記錄已成功更新php

if(mysql_query($sql)) 
    { 
     $_SESSION['Trans']="COMMIT"; 
     header("location:result.php"); 
     exit; 
    } 
    else 
     { 
      $_SESSION['Trans']="FAIL"; 
      $_SESSION['errors'] = "Error: Sorry! We are unable to update your Profile, Please contact to PNP HelpDesk."; 
      header("location:result.php"); 
      exit; 
     }//end IF 

數據得到更新,那麼爲什麼IF條件編譯器是不是裏面來了。

回答

2

mysql_query僅在錯誤情況下返回FALSE,而不是如果沒有行被更新。

是否有任何已更新,使用mysql_affected_rows,如:

$sql = 'UPDATE ....'; 
mysql_query($sql); 
if (mysql_affected_rows() > 0) { 
    // Success 
} else { 
    // Failure 
}
+2

雖然它沒有, 對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP,等的mysql_query的( )在成功時返回TRUE或在錯誤時返回FALSE。 但我仍然將它分配給一個變量,並測試,也許更隱含的'if($ result === true)' – 2010-05-27 10:58:26

+0

@DavidYell所以它確實。我對文檔進行了粗略的檢查,返回類型是作爲「資源」而不是「混合」給出的,所以沒有閱讀。無論哪種方式,一個不影響行的UPDATE仍然是「成功的」,所以你仍然需要'mysql_affected_rows' :) – Chris 2010-05-27 11:01:43

+0

它在錯誤時返回FALSE。沒有行更新是沒有錯誤,但從數據庫POV有效正確的行爲,這取決於數據和where子句。 – johannes 2010-05-27 11:02:20

相關問題