PDO::beginTransaction startet eine Transaktion (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
bool PDO::beginTransaction (void)
Deaktivieren Sie den Autocommit-Modus. Wenn der Autocommit-Modus deaktiviert ist, werden Änderungen, die über PDO-Objektinstanzen an der Datenbank vorgenommen werden, erst festgeschrieben, wenn PDO::commit() aufgerufen wird, um die Transaktion zu beenden.
Durch den Aufruf von PDO::rollBack() werden an der Datenbank vorgenommene Änderungen rückgängig gemacht und die Datenbankverbindung wird in den Autocommit-Modus zurückversetzt.
Einige Datenbanken, einschließlich MySQL, führen automatisch einen impliziten Transaktions-Commit durch, wenn sie eine DDL-Anweisung wie DROP TABLE oder CREATE TABLE ausgeben.
Durch das implizite Festschreiben können Sie keine anderen Änderungen im Rahmen dieser Transaktion rückgängig machen.
Das folgende Beispiel startet eine Transaktion und gibt zwei Anweisungen aus, die die Datenbank ändern, bevor die Änderungen rückgängig gemacht werden.
In MySQL schreibt die DROP TABLE-Anweisung die Transaktion jedoch automatisch fest, sodass Änderungen in dieser Transaktion nicht rückgängig gemacht werden.
<?php/* Starten Sie eine Transaktion und deaktivieren Sie die automatische Übermittlung*/$dbh->beginTransaction();/* Ändern Sie die Datenbankstruktur und die Daten*/$sth = $dbh->exec("DROP TABLE Fruit");$ sth = $dbh->exec("UPDATE dessert SET name = 'hamburger'");/* Erkennen Sie den Fehler und machen Sie die Änderungen rückgängig*/$dbh->rollBack();/* Die Datenbankverbindung befindet sich jetzt wieder im Autocommit-Modus*/?>