在 PHP MySQL 和 PDO 中启动 MySQL 事务的最佳方式


best way to start a mysql transaction in php mysqli and PDO

如何在 mysqli 和 PDO 中启动事务? 我该如何提交? 我已经看到了两种方法:使用自动提交(false)和begin_transaction方法,但哪一种是最好的方法? 我头疼! 自动提交(假)还是begin_transaction?

你的问题还不清楚,我正在回答它。开始和提交事务非常简单。在 PDO 中,执行以下操作:

<?php
    $pdo = // connect to database with PDO
    $pdo->beginTransaction();
    // query database here
    $result = // query result
    if($result) {
        // if result is okay
        $pdo->commit();
    } else {
        $pdo->rollBack();
    }
?>

**解释:**

  1. 首先,您开始交易
  2. 接下来,查询数据库
  3. 如果结果正常,则提交事务
  4. 如果结果不正常,则回滚,查询将不会执行

参考: http://php.net/manual/en/pdo.transactions.php

关于自动提交:在自动提交模式下,每个查询都是一个完整的事务,并且会立即执行。默认情况下,PDO 会自动提交每个查询。关闭自动提交将需要手动提交查询。在一般情况下,不应将其关闭。

当您需要执行重要查询时,即相互依赖的多部分查询的最终结果,例如两个帐户之间的金额转移(您需要从一个表中扣除金额并将其添加到另一个表中),只需开始交易。在您提交事务之前,PDO不会执行任何查询。如果出现问题,所有内容都将回滚到以前的状态。

最后,关闭自动提交和开始事务之间没有任何太大区别。通过开始事务,您可以简化任务,否则您将需要手动提交每个查询,而不管其性质如何。

我希望它能回答你的问题。