Keep in mind this bug: https://bugs.php.net/bug.php?id=66528
you could not rely on commit() return value while using MySqlPDO::commit
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
PDO::commit
Референца за `pdo.commit.php` со подобрена типографија и навигација.
PDO::commit
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::commit — Потврдува трансакција
= NULL
Потврдува трансакција, враќајќи ја конекцијата на базата на податоци во режим на автоматско потврдување до следниот повик до За жал, не секоја база на податоци поддржува трансакции, така што PDO мора да работи во таканаречен режим на „автоматско потврдување“ кога првпат ќе ја отворите врската. Режимот на автоматско потврдување значи дека секое прашање што го извршувате има своја имплицитна трансакција, ако базата на податоци го поддржува тоа, или без трансакција ако базата на податоци не поддржува трансакции. Ако ви треба трансакција, мора да го користите методот започнува нова трансакција.
Параметри
Оваа функција нема параметри.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Errors/Exceptions
Фрла PDOException ако нема активна трансакција.
Забелешка: Се крева исклучок дури и кога
PDO::ATTR_ERRMODEатрибутот не еPDO::ERRMODE_EXCEPTION.
Примери
Пример #1 Потврдување на основна трансакција
<?php
/* Begin a transaction, turning off autocommit */
$dbh->beginTransaction();
/* Insert multiple records on an all-or-nothing basis */
$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,
));
}
/* Commit the changes */
$dbh->commit();
/* Database connection is now back in autocommit mode */
?>
Пример #2 Потврдување на DDL трансакција
<?php
/* Begin a transaction, turning off autocommit */
$dbh->beginTransaction();
/* Change the database schema */
$sth = $dbh->exec("DROP TABLE fruit");
/* Commit the changes */
$dbh->commit();
/* Database connection is now back in autocommit mode */
?>Забелешка: Не сите бази на податоци ќе дозволат трансакциите да работат на DDL изјави: некои ќе генерираат грешки, додека други (вклучувајќи го и MySQL) автоматски ќе ја потврдат трансакцијата откако ќе се сретне првата DDL изјава.
Види Исто така
- За жал, не секоја база на податоци поддржува трансакции, така што PDO мора да работи во таканаречен режим на „автоматско потврдување“ кога првпат ќе ја отворите врската. Режимот на автоматско потврдување значи дека секое прашање што го извршувате има своја имплицитна трансакција, ако базата на податоци го поддржува тоа, или без трансакција ако базата на податоци не поддржува трансакции. Ако ви треба трансакција, мора да го користите методот - Започнува трансакција
- PDO::commit() - Враќа трансакција
- Конекции и управување со конекции