Skip to content

事务处理

事务确保数据库操作的原子性,要么全部成功,要么全部失败。

使用 MySQLi

php
<?php
$conn = new mysqli("localhost", "username", "password", "database");

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

try {
    // 开始事务
    $conn->begin_transaction();
    
    // 执行多个操作
    $conn->query("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $conn->query("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
    
    // 提交事务
    $conn->commit();
    echo "事务成功";
} catch (Exception $e) {
    // 回滚事务
    $conn->rollback();
    echo "事务失败: " . $e->getMessage();
}

$conn->close();
?>

使用 PDO

php
<?php
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");

try {
    // 开始事务
    $pdo->beginTransaction();
    
    // 执行多个操作
    $pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
    
    // 提交事务
    $pdo->commit();
    echo "事务成功";
} catch (Exception $e) {
    // 回滚事务
    $pdo->rollBack();
    echo "事务失败: " . $e->getMessage();
}
?>

事务特性(ACID)

  • 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败
  • 一致性(Consistency):事务前后数据库状态保持一致
  • 隔离性(Isolation):并发事务之间相互隔离
  • 持久性(Durability):事务提交后,数据永久保存

下一步

学习 cURL 扩展 → cURL 扩展

基于 VitePress 构建