2009-12-24 86 views

回答

0

一般而言,如果事务失败,您应该期望从数据库返回错误,就像您尝试执行单个查询一样。

请注意,并非所有MySQL表类型都支持事务。

1

检查结果(mysql_query, PHP Manual):

对于SELECT,SHOW,描述,解释等语句返回的结果集,请求mysql_query()成功返回的资源,或者在错误FALSE。

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功时返回TRUE或在错误时返回FALSE。

例(PHP4风格):编辑:每约翰内斯的评论

mysql_connect("localhost", "username", "password") or die(mysql_error()); 

mysql_select_db("test") or die(mysql_error()); 

$query = "INSERT INTO ..."; //Query here 

mysql_query("BEGIN"); // transaction begins 

$result = mysql_query($query); 

if(!$result) 
{ 
    mysql_query("ROLLBACK"); //Transaction rolls back 
    echo "Rolled Back."; 
    exit; 
} 
else 
{ 
    $committed = mysql_query("COMMIT"); //Commit Transaction 
    if(!$committed) 
    { 
     //Commit Failed, take appropriate action 
    } 
    else 
    { 
     echo "Successful Insert."; 
    } 
} 

或者,PDO使用改进的示例,请参阅PDO try-catch usage in functions

+0

不要使用@ operatorin这样的过度方式。这使得调试非常困难。相反,将display_errors设置为关闭并将错误记录到日志文件。 并且您不检查提交是否成功... – johannes 2009-12-24 09:21:50

+0

好点 - 请参阅上面的编辑 – micahwittman 2009-12-24 09:31:30

相关问题