Hauptmenü

Untermenü

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