Prepared Statement

Ein Prepared Statement ist eine sogenannte vorbereitete Anweisung für ein Datenbanksystem.

Im Gegensatz zu gewöhnlichen Statements enthält es noch keine Parameterwerte. Stattdessen werden dem Datenbanksystem Platzhalter übergeben.

Verwendet eine Anwendung ausschließlich Prepared Statements, ist davon auszugehen, dass keine SQL Injection möglich ist, da das Datenbanksystem die Gültigkeit von Parametern prüft, bevor diese verarbeitet werden. Diese Maßnahme gegen SQL Injection ist aber nicht auf alle DBMS anwendbar.

Prepared Statements besitzen mehrere Vorteile gegenüber direkt ausgeführten SQL Statements. Die Anfrage muss nur einmal geparsed werden, welche dann mehrmals mit anderen Parametern ausgeführt werden kann. Bei der Vorbereitung analysiert und optimiert die Datenbank die Anfrage. Für komplexe und wiederholende Anfragen spart das Ressourcen, Bandbreite und Zeit, weil nur die Parameter und nicht die gesamte Query gesendet wird. Die Nutzereingaben bzw. die Parameter müssen nicht maskiert werden. Lediglich die SQL Query wird kompiliert und die Parameter als Variable gesehen, welche nie geparsed werden.

Beispiel eines Prepared Statement in PHP mit PHP Data Objects:

Prepared Statement in PHP

Quellen: https://de.wikipedia.org/wiki/Prepared_Statement