(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — Фиксирует транзакцию
Фиксирует транзакцию, возвращая соединение с базой данных в режим автоматической фиксации до тех пор, пока следующий вызов 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();
$sth = $dbh->exec("DROP TABLE fruit");
$dbh->commit();
?>
Замечание: Не все базы данных позволяют транзакциям работать с DDL-выражениями: в некоторых генерируются ошибки, тогда как в других (включая MySQL) транзакция автоматически фиксируется после первого встретившегося DDL-выражения.