mysqli::begin_transaction
(mysqli_begin_transaction)启动一个事务
mysqli::begin_transaction
PHP 5 >= 5.5.0,PHP 7,PHP 8
该函数用于显式地启动一个数据库事务。默认情况下,MySQL 使用自动提交模式,该函数会禁用自动提交并开始一个新的事务。此函数是面向对象风格的 mysqli 扩展的一部分。
public mysqli::begin_transaction(int $flags = 0, ?string $name = null): bool
成功时返回 true,失败时返回 false。
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
die("连接失败: " . $mysqli->connect_error);
}
$mysqli->begin_transaction();
try {
$mysqli->query("INSERT INTO users (name, email) VALUES ('Alice', '[email protected]')");
$mysqli->query("INSERT INTO users (name, email) VALUES ('Bob', '[email protected]')");
$mysqli->commit();
echo "事务已提交。";
} catch (Exception $e) {
$mysqli->rollback();
echo "事务回滚: " . $e->getMessage();
}
$mysqli->close();
?>
该示例使用 mysqli::begin_transaction 开始一个事务,并尝试插入两个用户记录。如果两个插入语句都成功,则提交事务;如果其中任何一个失败,则捕获异常并回滚事务,从而保证数据一致性。