mysqli::rollback
(mysqli_rollback)回滚当前事务
PHP 5, PHP 7, PHP 8
mysqli::rollback 函数用于撤销当前数据库连接中最近开始的事务。当你开启了事务处理(使用 mysqli::begin_transaction() 或设置了自动提交为 false),可以使用该方法回滚未提交的更改。
bool mysqli::rollback ([ int $flags = 0 [, string $name ]] )
过程化风格:
bool mysqli_rollback ( mysqli $link [, int $flags = 0 [, string $name ]] )
成功时返回 true,失败时返回 false。
$mysqli = new mysqli("localhost", "username", "password", "database"); <p>// 检查连接<br> if ($mysqli->connect_error) {<br> die("连接失败: " . $mysqli->connect_error);<br> }</p> <p>// 关闭自动提交<br> $mysqli->autocommit(false);</p> <p>// 插入数据<br> $mysqli->query("INSERT INTO test (name) VALUES ('测试1')");<br> $mysqli->query("INSERT INTO test (name) VALUES ('测试2')");</p> <p>// 出错时回滚<br> if (!$mysqli->query("INSERT INTO not_exist_table (col) VALUES ('err')")) {<br> echo "发生错误,执行回滚。";<br> $mysqli->rollback();<br> } else {<br> $mysqli->commit();<br> echo "事务已提交。";<br> }</p> <p>$mysqli->close();<br>
本示例演示了如何使用事务处理来控制多条 SQL 语句的执行。通过设置 autocommit(false) 来开启事务,执行多条插入语句后,如果某条语句出错(如插入不存在的表),则调用 rollback() 撤销所有更改。否则,调用 commit() 提交事务。