PDO - Transaktionen
1. Eine gute Nachricht
Im Vergleich zu MySQLi hat es bei PDO eine entscheidende Verbesserung gegeben. Denn man spart sich diesen doch ziemlich verkrampften
Umweg über autocommit
oder BEGIN
. Ansonsten ist alles beim Alten geblieben. Ist ja auch kein Kunststück bei
so einer einfachen Sache.
2. Eine Transaktion durchführen
Das Prinzip solltet ihr ja mittlerweile kennen, starten, ausführen oder zurückrudern. Zuerst leitet man die Transaktion ein.
$pdo = new PDO(...);
$pdo -> beginTransaction();
Dann werden die entsprechen SQL-Statements ausgeführt.
$query = 'UPDATE bla SET blubb = 1 WHERE id < 10';
$nums = $pdo -> exec($query);
Und zum Schluss wird die Transaktion entweder ausgeführt
if (Bedingung) {
$pdo -> commit();
}
oder zurückgesetzt.
else {
$pdo -> rollBack();
}
3. Wirkungsweise
Im Gegensatz zu MySQLi gibt es hier nur eine Art, wie das umgesetzt wird. Nämlich über autocommit
. Dabei passiert das hier.
beginTransaction
Diese Methode setzt autocommit
automatisch auf false
. Es wird also nicht mit einer SQL-Abfrage
à la BEGIN
gearbeitet.
commit
/rollBack
Dise beiden Methoden ändern dann den Wert für autocommit
wieder auf true
und alles weitere funktioniert wieder
wie gehabt.
4. Der Vorteil
Wie ich schon sagte, muss man bei MySQLi darauf achten, wie man die Transaktion startet. Bei PDO ist das ziemlich lattens, da alles automatisch abläuft. Und meiner Meinung nach ist das ein echtes Plus.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt