dedlfix: mysql: Umstieg von mysql_ auf PDO

Beitrag lesen

Tach!

Warum ist das eigentlich so, dass Prepared Statements das von Hause aus mitbringen?

Das ist prinzipbedingt. Bei Prepared Statements geht zuerst das Statement mit Platzhaltern auf die Reise. Die Werte werden anschließend separat übertragen. Dabei brauchen sie keine Aufbereitung, weil sie ja nicht in den Text-Kontext des SQL-Statements gebracht werden. Du übergibst sie als Roh-Wert per Binding oder über den execute()-Parameter und der Datenbanktreiber kümmert sich um einen problemlosen Transport.

Es kann sein, dass PDO die Prepared Statements nur simuliert. (Bei den meisten SQL-Datenbanksystemen sind sie jedoch mittlerweile direkt nutzbar.) Aber dann ist es auch Aufgabe von PDO das Einfügen korrekt vorzunehmen, so dass du dich nicht weiter darum kümmern musst, als die Roh-Werte zu übergeben.

Meine Funktion cleanMyInput() nimmt ja als Parameter den Inhalt sowie den "Typ" entgegen, also int, string, bool, float, o.ä.

Den Typ kann man auch aus dem Wert in der Variable ermitteln, den muss man nicht händisch übergeben und dabei aufpassen, dass er zum Wert passt.

Meine Idee war nun, schlicht einen Parameter stringPDO hiunzuzunehmen und dann sukkzessive die Scripte umzuschreiben. Und wenn ich fertig bin, kann der Parameter string komplett entfallen.

Dein Problem ist, dass du nur für die Übergangsphase eine Unterscheidung zwischen Alt- und Neu-Vorgehen brauchst. Oder du musst entweder vorher alle Alt-Aufrufe anpassen oder hinterher alle Neu-Aufrufe.

Aber wenn ich mir das mal genau überlege, hast du dir durch diese Funktion gar keinen großen Vorteil erschaffen gegenüber dem direkten Behandeln an Ort und Stelle. Letzteres ist auch nur ein einzelner Funktionsaufruf. (Für Zahlen kann man mit intval() statt settype() einen Integer erzwingen.)

dedlfix.