PHP8 PDO::commit
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — 提交一个事务
说明
public PDO::commit(): bool
提交一个事务,数据库连接返回到自动提交模式直到下次调用 PDO::beginTransaction() 开始一个新的事务为止。
参数
此函数没有参数。
返回值
成功时返回 true, 或者在失败时返回 false。
错误/异常
如果没有活动中的事务,则抛出 PDOException。
注意: PDO::ATTR_ERRMODE 属性不是 PDO::ERRMODE_EXCEPTION 时会抛出一个异常。
示例
示例 #1 提交一个基础事务
<?php
/* 开始一个事务,关闭自动提交 */
$dbh->beginTransaction();
/* 在全有或全无的基础上插入多行记录(要么全部插入,要么全部不插入) */
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$sth = $dbh->prepare($sql);
foreach ($fruits as $fruit) {
$sth->execute(array(
$fruit->name,
$fruit->colour,
$fruit->calories,
));
}
/* 提交更改 */
$dbh->commit();
/* 现在数据库连接返回到自动提交模式 */
?>
示例 #2 提交一个DDL事务
<?php
/* 开始一个事务,关闭自动提交 */
$dbh->beginTransaction();
/* Change the database schema */
$sth = $dbh->exec("DROP TABLE fruit");
/* 更改数据库架构 */
$dbh->commit();
/* 现在数据库连接返回到自动提交模式 */
?>
注意: 并不是所有数据库都允许使用DDL语句进行事务操作:有些会产生错误,而其他一些(包括MySQL)会在遇到第一个DDL语句后就自动提交事务。
参见
- PDO::beginTransaction() - 启动一个事务
- PDO::rollBack() - 回滚事务
- 事务和自动提交