在php mysqli和PDO中启动mysql事务的最佳方法

时间:2016-01-14 14:24:14

标签: php mysqli pdo transactions

如何在mysqli和PDO中启动事务?我怎么能承诺呢?我见过两种方法:使用autocommit(false)和begin_transaction方法,但哪一种方法最好?我头疼了! autocommit(false)或begin_transaction?

1 个答案:

答案 0 :(得分:1)

你的问题尚不清楚,我还在回答。开始并提交事务很简单。在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. 如果结果不正常,则rollBack和查询将不会执行
  5. 参考:http://php.net/manual/en/pdo.transactions.php

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

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

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

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