Tach!
mysqli bietet im Übrigen auch Unterstützung für prepared statements. Der Kontextwechsel findet dort allerdings nicht ganz automatisch wie bei PDO statt,
Kontextwechsel? Findet da keiner statt. Die Werte werden in Rohform übergeben. Das ist ein ganz normaler Funktionsaufruf mit Parameterübergabe. Kontextwechsel ist, wenn Daten als Literal in anderen Code eingefügt werden müssen.
man muss bei der Übergabe der Variablen noch zusätzliche Typinformationen mitgeben. Warum auch immer.
Weil das die darunterliegende in C geschriebene MySQL-API so möchte und PHP einfach nur die Funktionen gewrappt hat. Die Werte werden als Zeiger auf einen untypisierten Buffer übergeben. Und damit die Bind-Funktion weiß, welcher Datentyp da zu erwarten ist, muss man das mit diesen Buchstaben sagen. Für PHP ist das nicht wirklich sinnvoll, denn da gibt es keine untypisierten Datenstrukturen. Der Typ kann aus den Metadaten der Variablen ermittelt werden. Der PDO-Weg ist hier deutlich angenehmer. Vor allem kann man auch seine Werte als Array übergeben und muss nicht einzelne Variablen bereitstellen, damit diese referenziert werden können.
dedlfix.