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

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

Mary-Kate Olsen
发布: 2024-12-19 10:41:16
原创
131 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板