Auch mit PDO lassen sich Transaktionsklammern nutzen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php $pdo = new PDO("mysql:host=localhost;dbname=demodatenbank", "benutzer","passwort"); $pdo->beginTransaction(); $kunden = $pdo->query("SELECT COUNT(*) FROM kunde"); $anzahl_kunden = $kunden->fetch()[0]; $kunden->closeCursor(); $rechnungen = $pdo->query("SELECT SUM(betrag) FROM rechnung"); $betrag_rechnungen = $rechnungen->fetch()[0]; $rechnungen->closeCursor(); $pdo->exec("INSERT INTO statistik (anzahl, betrag) VALUES ($anzahl_kunden, $betrag_rechnungen)"); if (!$pdo->commit()) { print("Transaktion gescheitert\n"); $pdo->rollback(); } ?> |
Die Erklärung zu diesem PDO-Transaktionsskript ist ähnlich wie für das MySQLi-Transaktionsskript. Mit beginTransaction()
wird die Transaktion gestartet. Hierbei wird der Autocommit ausgeschaltet. Mit commit()
wird der Commit durchgeführt. Alternativ kann man die Transaktionsklammer auch wieder verlassen, indem man mit einem rollback()
ein Rollback durchführt.