PDO Transactions
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktion
anwendung
basierte datenbanken
beispiel
code
datenbank
eingabe
einheitlichen zugang
erbe
erfolg
fehler
jemand
problem
resultat
sagen
statement
umstieg
update
vorbereiten
vorkommen
-
Kennt sich jemand mit PDO Transactions aus?
Habe aktuell ein Problem mit meinen Prepared-Statements, die werden, trotz RollBack immernoch ausgefuehrt.
<?php /** * Ausführende Klasse ist Erbe von PDO */ #Prepared Statements const STATEMENT1 = 'INSERT INTO table (key) VALUES (:value)'; const STATEMENT2 = 'INSERT X table (key) VALUES (:value)'; #Fehler eingebaut const STATEMENT3 = 'INSERT INTO table (key) VALUES (:value)'; try{ #Transaction initiieren $this->beginTransaction(); #Statements vorbereiten, Variablen zuweisen (gekürzt) und ausführen... $stmt = $this->prepare(self::STATEMENT1); $stmt->bindValue([...]); $stmt->execute(); $stmt2 = $this->prepare(self::STATEMENT2); $stmt2->bindValue([...]); $stmt2->execute(); $stmt3 = $this->prepare(self::STATEMENT2); $stmt3->bindValue([...]); $stmt3->execute(); #Bei Erfolg Commit... $this->commit(); }catch (Exception $e) { #Rollback bei Exception $this->rollBack(); echo "<pre>"; die(print_r($e)); } /** Erwartetes Resultat: Keine Änderung in der Datenbank, da Statement2 fehlerhaft ist! Tatsächliches Resultat: Statement1 wird ausgeführt, Statement2 wirft die Exception und verhindert die Ausführung von Statement3... */ ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
wenn du deinen Code sauber programmierst, sollte so ein Fehler in der späteren Anwendung nicht mehr vorkommen. Was ich damit sagen möchte ist, dass du alle Eingaben (userID='123') überwachen solltes, jedoch nicht die SQL Aktion (SELECT,INSERT,UPDATE) selber.
PHP Data Objects oder kurz PDOs stellt eine Abstraktionsebene für den Datenbankzugriff dar und ermöglicht einen einheitlichen Zugang von PHP auf unterschiedliche SQL-basierte Datenbanken, wie zum Beispiel MySQL, PostgreSQL oder SQLite. Dabei wird unter anderem der Portierungsaufwand beim Umstieg auf eine andere Datenbank minimiert.
MfG
laen4lith -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage