当前位置:首页 > PHP

php实现事务控制

2026-02-27 22:41:56PHP

PHP 实现事务控制的方法

在 PHP 中,事务控制通常通过数据库扩展(如 PDO 或 MySQLi)实现。以下是两种常见的方法:

使用 PDO 实现事务

PDO(PHP Data Objects)提供了一种统一的方式处理数据库事务。以下是实现步骤:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$pdo->beginTransaction();

try {
    $stmt1 = $pdo->prepare("UPDATE accounts SET balance = balance - :amount WHERE id = :id");
    $stmt1->execute([':amount' => 100, ':id' => 1]);

    $stmt2 = $pdo->prepare("UPDATE accounts SET balance = balance + :amount WHERE id = :id");
    $stmt2->execute([':amount' => 100, ':id' => 2]);

    $pdo->commit();
    echo "Transaction completed successfully";
} catch (Exception $e) {
    $pdo->rollBack();
    echo "Transaction failed: " . $e->getMessage();
}

使用 MySQLi 实现事务

MySQLi 扩展也支持事务控制,适用于 MySQL 数据库:

php实现事务控制

$mysqli = new mysqli('localhost', 'username', 'password', 'test');

$mysqli->autocommit(FALSE);

try {
    $mysqli->query("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE id = 2");

    $mysqli->commit();
    echo "Transaction completed successfully";
} catch (Exception $e) {
    $mysqli->rollback();
    echo "Transaction failed: " . $e->getMessage();
}

事务控制的注意事项

确保数据库引擎支持事务(如 InnoDB)。MyISAM 引擎不支持事务。

事务应尽量简短,避免长时间占用数据库连接。

php实现事务控制

在事务中处理异常时,务必调用 rollBack()rollback() 方法。

可以通过 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) 设置 PDO 错误模式为异常处理。

嵌套事务的处理

某些数据库支持嵌套事务,但 MySQL 不支持真正的嵌套事务。可以通过保存点(SAVEPOINT)模拟:

$pdo->beginTransaction();
$pdo->exec("SAVEPOINT point1");

try {
    // 执行一些操作
    $pdo->exec("RELEASE SAVEPOINT point1");
} catch (Exception $e) {
    $pdo->exec("ROLLBACK TO SAVEPOINT point1");
}

标签: 事务php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…