Bernhard Häussner

Umstellung auf PHP Data Objects mit Prepared Statements

10.01.2009, 09:52
PDO and Prepared Statements

PDO and Prepared Statements

Da ich die letzte Zeit offline war (und bald eine rund 15x schnellere Internet-Verbindung habe) konnte ich am Computer recht wenig machen. Deshalb habe ich ein bisschen an dieser Webseite gebastelt und die Datenbank-Verbindung auf PHP Data Objects (PDO) umgestellt. Diese unterstützen Prepared Statements, wo eine SQL-Abfrage schon geparsed werden kann, bevor konkrete Werte eingesetzt wurden, was sowohl der Sicherheit (keine SQL-Injections möglich) als auch dem Reccourcen-Verbrauch (Unveränderliches wird geparsed und gespeichert) zugute kommt.

Ich konnte mit der Umstellung auch gleich meine interne Datenverbindung zu den Views von einem Gemisch aus MySQL-Resultsets und Arrays auf nur Arrays umstellen, sodass die Views jetzt nicht mehr Umgeschrieben werden müssen, falls der PHP-Controller auch die Daten ändern will, wie zum Beispiel bei der Suche, wo die Reihenfolge der Ergebnisse von PHP berechnet wird. Da die MySQL-Abfragen dennoch optimiert sind, werden diese Arrays auch nicht zu groß.

Die Umsetzung der PDOs war nicht ganz einfach, zumal die (unvollständige) Datenbankabstraktion mehr oder weniger abwärtskompatibel sein sollte aber zusätzlich einiges an Automatik beinhalten sollte. So cacht sie jetzt nur SELECT-Abfragen, und gibt je nach Abfrage-Art (SELECT, INSERT, UPDATE) das Resultset, die Insert-ID oder die Anzahl der upgedateten Datensätze zurück. Sie verwaltet selbst die Prepared Statements, sodass nichts doppelt präpariert wird, überlässt mir damit also die Fütterung mit beliebigem SQL und kümmert sich um den Rest.

Da die PDOs auch eine relativ einfache Umsetzung von Transactions mitliefern, überlege ich mir, ob ich auch noch diese automatisch laufen lasse, jedoch habe ich noch kaum Erfahrung mit Transactions, weshalb ich damit erst nicht etwas beschäftigen muss (Rollbacks, SELECTs etc.).

Kurze URL http://1-co.de/b/g. Post to twitter

Kommentare

keine





 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zu dieser Seite: http://1-co.de/b/g