ChrisB: Sicherheit bei Formular erhöhen

Beitrag lesen

Hi,

habe mir noch einmal

PDOStatement->bindParam
PDOStatement->bindValue

angeschaut und auf dem 2. Blick festgestellt, dass mir die Unterschiede zwischen beiden Funktionen doch nicht so klar sind.

.. weil beide Funktionen im phpmanual fast identisch beschrieben werden.

Ja, aber eben auch nur fast.

PDOStatement::bindParam
Unlike PDOStatement::bindValue(), the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.

Nutzt du PDOStatement::bindValue, dann wird der aktuelle Wert der Variablen zum Zeitpunkt der Ausführung dieser Funktion eingesetzt.

Nutzt du hingegen PDOStatement::bindParam, dann kanst du dein Statement auch weit vorher vorbereiten, bspw. während der Initialisierung eines Moduls. Der Wert des ans Statement gebunden Parameters kann dann im weiteren Scriptverlauf noch beliebig manipuliert werden - erst, wenn du das Statement ausführst, wird der zu diesem Zeitpunkt aktuelle Wert eingesetzt.

Eigentlich könnten die PDO-Functionen das % doch automatisch verändern oder ?

Dann könntest du LIKE wirklich nicht mehr verwenden, weil nicht nur dein als Datenbestandteil gemeintes % behandelt würde, sondern auch dein als Platzhalterzeichen gemeintes %.

MfG ChrisB

--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]