Der erste Zweck von Prepared Statements ist eine schnellere Ausführung von ähnlichen SQL-Statements, die mehrfach nacheinander ausgeführt werden. Der zweite Zweck ist ein Verhindern von SQL-Injektions, also einer bestimmten Angriffsmethode. Beides haut mich jetzt nicht vom Hocker, denn der letzten Millisekunde Geschwindigkeitssteigerung jage ich nicht hinterher und ich frage mich schon, ob man SQL-Injektions nicht auch eleganter verhindern kann. Aber manchmal kommt man wohl nicht umhin, sich mit ihnen zu beschäftigen.
Prepared Statements sind erstmal völlig unabhängig von irgendwelchen Programmiersprachen (PHP, Java, etc.) und sind erstmal Dinger, die in Datenbanken leben. Die gängigen Datenbank-Systeme (z.B. mySQL und Oracle) können Prepared Statements (Quelle)
Doch was sind Prepared Statements? Prepared Statements sind SQL-statements, die schon mal unfertig an die Datenbank vorausgeschickt werden. Unfertig, weil sie an der ein oder anderen Stelle nur mit Platzhalten (im Romme würde man Joker sagen) gefüllt sind, damit sie in der Datenbank schon mal auf ihren Einsatz (=Ausführung) vorbereitet (daher der Name prepared statement) werden. Da sie dort schon vorbereitet sitzen, können sie eben schneller ausgeführt werden, wenn es losgeht. Los geht’s, wenn eine Anweisung kommt, die sie namentlich aufruft und sie über die Werte informiert, die bisher nur als Platzhalter vorliegen (im Romme würde man sagen, dass der Joker beispielsweise mit der Herz 8 ausgetauscht wird).
Wie die Prepared Statements genau erzeugt werden, hat Peter Kropf in seinem Tutorial schön und einfach beschrieben.