dedlfix: AND an Funktion übergeben

Beitrag lesen

Tach!

wann entscheidet man sich für das eine und wann für das andere? Gibt es da Anwendungsfälle wie man reagiert? Ich denke wenn ich selber weiß was ankommt dann kann ich dieses direkt einfügen, wenn ich nicht weiß was der User mit unterjubeln will sollte ich auf das andere setzten?

Die Unterscheidung darf nicht User vs. Anderes sein, sondern es muss die Korrektheit des SQL-Statements garantieren werden. Die Herkunft der Daten, die du da einfügen möchtest, spielt keine Rolle. Wichtig ist nur die Frage ob Sonderzeichen enthalten sein können, also all das, was man maskieren muss. Zu beachten sind auch Fälle, wo beispielsweise numerische Werte eingefügt werden sollen, die im Statement nicht in Anführungszeichen geschrieben werden. Auch das muss syntaktisch korrekt erfolgen, zum Beispiel indem mit intval() eine Zahl erzwungen wird.

Und dann ist es im Prinzip egal, ob du das Statement selbst zusammenbaust oder die Daten getrennt per Prepared Statement übermittelst.

Prepared Statements sind eigentlich dafür gedacht, ein Prepare und mehrere Executes durchführen zu können. Wenn man nur ein Execute hat, dann nutzt man lediglich die angenehme Nebenwirkung, sich um Quotierung und Maskierung nicht kümmern zu müssen.

dedlfix.