LonghornPHP 2026

PDO::commit

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::commit Фиксирует транзакцию

Описание

public function 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();
/* Изменение схемы базы данных */
$sth = $dbh->exec("DROP TABLE fruit");
/* Фиксация изменений */
$dbh->commit();
/* Соединение с базой данных снова в режиме автоматической фиксации */
?>

Замечание:

Не все базы данных позволяют транзакциям работать с DDL-выражениями: в некоторых генерируются ошибки, тогда как в других (включая MySQL) транзакция автоматически фиксируется после первого встретившегося DDL-выражения.

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
1
re_action
11 years ago
Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySql
+Добавить

AltStyle によって変換されたページ (->オリジナル) /