如何判断交易是成功还是失败?

时间:2009-12-24 08:18:44

标签: php mysql transactions

我正在使用MySQL和PHP。

运行此交易:

begin;
....
commit;

如何判断PHP是否失败?

3 个答案:

答案 0 :(得分:1)

检查结果(mysql_query, PHP Manual):

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

     

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

示例(PHP4风格):编辑:每个johannes的评论改进示例

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

每次执行SQL后,检查数据库是否未返回错误。使用http://www.php.net/manual/en/function.mysql-errno.php检查错误。

DB可能会在任何时候返回错误,并且应始终检查每个SQL ...