2010-05-27 65 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