当前位置:首页 > PHP

php实现事务控制

2026-01-29 01:37:44PHP

PHP 实现事务控制的方法

在 PHP 中,事务控制通常用于确保数据库操作的原子性、一致性、隔离性和持久性(ACID)。以下是使用 PDO 和 MySQLi 扩展实现事务控制的详细方法。

使用 PDO 实现事务控制

PDO(PHP Data Objects)是 PHP 的一个数据库访问抽象层,支持多种数据库。以下是 PDO 实现事务的步骤:

try {
    $pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 开始事务
    $pdo->beginTransaction();

    // 执行 SQL 语句
    $pdo->exec("INSERT INTO users (name, email) VALUES ('John', 'john@example.com')");
    $pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1");

    // 提交事务
    $pdo->commit();
    echo "事务提交成功";
} catch (PDOException $e) {
    // 回滚事务
    $pdo->rollBack();
    echo "事务失败: " . $e->getMessage();
}
  • beginTransaction():开始一个新事务。
  • commit():提交事务,所有操作生效。
  • rollBack():回滚事务,撤销所有操作。

使用 MySQLi 实现事务控制

MySQLi 是 PHP 的 MySQL 扩展,支持面向对象和面向过程的编程风格。以下是 MySQLi 实现事务的步骤:

php实现事务控制

面向对象风格

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

if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}

// 关闭自动提交
$mysqli->autocommit(false);

try {
    $mysqli->query("INSERT INTO users (name, email) VALUES ('Jane', 'jane@example.com')");
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2");

    // 提交事务
    $mysqli->commit();
    echo "事务提交成功";
} catch (Exception $e) {
    // 回滚事务
    $mysqli->rollback();
    echo "事务失败: " . $e->getMessage();
}

$mysqli->close();

面向过程风格

$link = mysqli_connect("localhost", "username", "password", "test");

if (!$link) {
    die("连接失败: " . mysqli_connect_error());
}

// 关闭自动提交
mysqli_autocommit($link, false);

try {
    mysqli_query($link, "INSERT INTO users (name, email) VALUES ('Mike', 'mike@example.com')");
    mysqli_query($link, "UPDATE accounts SET balance = balance - 50 WHERE user_id = 3");

    // 提交事务
    mysqli_commit($link);
    echo "事务提交成功";
} catch (Exception $e) {
    // 回滚事务
    mysqli_rollback($link);
    echo "事务失败: " . $e->getMessage();
}

mysqli_close($link);
  • autocommit(false):关闭自动提交模式,开启事务。
  • commit():提交事务。
  • rollback():回滚事务。

事务控制的注意事项

  1. 异常处理:事务中任何操作失败都应触发回滚,确保数据一致性。
  2. 数据库支持:确保数据库引擎支持事务(如 InnoDB)。
  3. 性能影响:长时间的事务可能锁定资源,影响并发性能。

通过以上方法,可以在 PHP 中高效实现数据库事务控制。

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

相关文章

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…