如何在 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();
}
?>
**解释:**
- 首先,您开始交易
- 接下来,查询数据库
- 如果结果正常,则提交事务
- 如果结果不正常,则回滚,查询将不会执行
参考: http://php.net/manual/en/pdo.transactions.php
关于自动提交:在自动提交模式下,每个查询都是一个完整的事务,并且会立即执行。默认情况下,PDO 会自动提交每个查询。关闭自动提交将需要手动提交查询。在一般情况下,不应将其关闭。
当您需要执行重要查询时,即相互依赖的多部分查询的最终结果,例如两个帐户之间的金额转移(您需要从一个表中扣除金额并将其添加到另一个表中),只需开始交易。在您提交事务之前,PDO不会执行任何查询。如果出现问题,所有内容都将回滚到以前的状态。
最后,关闭自动提交和开始事务之间没有任何太大区别。通过开始事务,您可以简化任务,否则您将需要手动提交每个查询,而不管其性质如何。
我希望它能回答你的问题。