首页 >后端开发 >php教程 >如何在 PHP 中有效管理 MySQL 事务?

如何在 PHP 中有效管理 MySQL 事务?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-19 10:41:16186浏览

How to Manage MySQL Transactions Effectively in PHP?

PHP MySQL 事务示例

PHP 和 MySQL 中的事务允许您将一组查询分组为单个原子工作单元。这意味着如果其中一个查询失败,事务所做的所有更改都会回滚。

如何使用事务

在 PHP 和MySQL,您将需要:

  1. 通过调用 mysql_query("SET AUTOCOMMIT=0") 启动事务并mysql_query("START TRANSACTION").
  2. 执行查询。
  3. 如果所有查询都成功,则通过调用 mysql_query("COMMIT") 提交事务。
  4. 如果任何查询失败,请通过调用回滚事务mysql_query("ROLLBACK").

示例

以下是如何在 PHP 和 MySQL 中使用事务的简单示例:

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')");
$a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");

if ($a1 and $a2) {
    mysql_query("COMMIT");
} else {        
    mysql_query("ROLLBACK");
}

在此示例中,仅当 $a1 和 $a2 都成功时才会执行 COMMIT 语句。如果任一查询失败,则会执行 ROLLBACK 语句。

使用 PDO 进行事务

PDO 类提供了一种更现代、面向对象的工作方式MySQL 事务。要使用 PDO 进行事务,您需要:

  1. 创建一个 PDO 对象并将 PDO::ATTR_ERRMODE 属性设置为 PDO::ERRMODE_EXCEPTION。
  2. 通过调用 $ 启动事务pdo->beginTransaction().
  3. 执行你的
  4. 如果所有查询都成功,则通过调用 $pdo->commit() 提交事务。
  5. 如果任何查询失败,则通过调用回滚事务$pdo->rollback().

示例

以下是如何使用 PDO 进行事务的示例:

try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO rarara (l_id) VALUES('1')");
    $pdo->exec("INSERT INTO rarara (l_id) VALUES('2')");

    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollback();
    throw $e;
}

在此示例中,仅当两个查询都成功时才会调用 commit() 方法。如果任一查询失败,则会调用 rollback() 方法并引发异常。

以上是如何在 PHP 中有效管理 MySQL 事务?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn