Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Datenbanken und PHP Grundkurs

Operationen in Transaktionen zusammenfassen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wenn mehrere Datenbankoperationen gemeinsam behandelt werden sollen, sind Transaktionen das Mittel der Wahl. Das vereinfachte Beispiel für Kontobewegungen zeigt, wie das funktioniert.

Transkript

Kontobuchungen bestehen eigentlich aus zwei Aktionen: Bei einem Konto wird ein Betrag abgebucht und beim anderen Konto gutgeschrieben. Dabei ist es wichtig, dass entweder beide Aktionen durchgeführt werden oder aber keine von beiden. Genau dafür braucht man Transaktionen. Sehen wir uns an, wie das funktioniert: Ich habe eine ganz einfache Tabelle, um das Grundprinzip zu zeigen; habe zwei Personen mit irgendwelchen fiktiven Kontoständen und zwischen diesen beiden Konten sollen jetzt Buchungen stattfinden. Sehen wir uns das etwas vereinfachte Beispiel an: Also, wir haben einen Betrag, um den es geht, wir haben zwei Personen; nämlich Mia Maier und Nora Nordpol. Und das sind die Aktionen, die stattfinden sollen: Es soll zum einen von dem einen Konto ein Betrag abgebucht werden und dieser Betrag soll beim anderen Konto gutgeschrieben werden. Wir führen das mit Prepared Statements durch und binden die Parameter. Soweit ist alles ganz klassisch; hier in diesem Fall ohne weitere Überprüfung, um das Beispiel kurz zu halten. Dann müssen wir die Transaktion starten; das können wir seit PHP 5.5 mit "begin_transaction" machen, für ältere Versionen verwenden wir "autocommit (false)". Damit werden solche Operationen nicht mehr automatisch durchgeführt. Dann führen wir zuerst einmal die Abbuchung durch. Wenn das klappt, ist "affected _rows" 1, wenn es hingegen nicht geklappt hat, ist "affected_rows" 0. Dann machen wir das rückgängig und schreiben eine Meldung in die Variable "Fehler". Wenn das hingegen geklappt hat, dann beginnen wir die zweite Aktion: Auch dort überprüfen wir, ob wirklich eine Zeile davon betroffen ist. Wenn das nicht der Fall ist, machen wir es rückgängig mit "rollback" und speichern ebenfalls eine Fehlermeldung. Wenn hingegen alles gut gegangen ist, sind wir in diesem "else"-Zweig und sorgen mit "commit" dafür, dass das Ganze wirklich ausgeführt wird. Im unteren Teil des Skriptes lassen wir die Kontostände mit den Namen ausgeben. Testen wir einmal, ob das funktioniert hat. Also, Mia Maier hat jetzt weniger; 4.950, Nora Nordpol hat 5.250. Wir können es noch mal durchführen und wir sehen, es geschieht immer parallel, dass bei Mia Maier abgebucht wird und bei Nora Nordpol der Betrag gutgeschrieben wird. Jetzt ändern wir einmal einen Namen; z.B. machen wir aus der Mia Maier eine "Meier" mit ei. Und wenn wir das jetzt durchführen, dann erhalten wir korrekterweise die Meldung "Transaktion hat nicht geklappt, konnte nicht abbuchen". Wenn ich das jetzt aktualisiere, passiert nichts weiter, das heißt, wenn nicht abgebucht wird, bekommt die Nora Nordpol auch nicht mehr. Das heißt, es hat alles geklappt wie es soll. Wichtig noch: Diese Transaktionen funktionieren nur beim Datenbanktyp InnoDB, der inzwischen aber Standard ist. Sie haben an einem Beispiel gesehen, wie man mit Transaktionen arbeitet; das bedeutet, es sollen zwei Aktionen entweder beider ausgeführt werden oder beide nicht; es können natürlich noch mehr Aktionen sein. Wir starten diesen Modus mit "autocommit (false)". Damit wird das nicht mehr automatisch ausgeführt. Und wenn es nicht geklappt hat, können wir das immer rückgängig machen mit "rollback" und wenn alles geklappt hat, müssen wir noch "commit" aufrufen, damit diese Änderungen auch wirklich durchgeführt werden.

Datenbanken und PHP Grundkurs

Erfahren Sie alles, was Sie brauchen, um mit PHP Datenbanken anzusprechen, Daten einzutragen, zu verändern, zu löschen und abzufragen.

1 Std. 44 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:11.01.2017
Laufzeit:1 Std. 44 min (29 Videos)

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!