Rolf b: PHP SQL Statements

Beitrag lesen

Mit der Argumentation („Das Fragezeichen als Platzhalter ist [...] einfacher zu parsen als :meinTollesFeld“) kann man übrigens auch dafür plädieren, dass man möglichst kurze Variablennamen verwenden sollte.

Nein, habe ich anders gemeint. Es geht mir nicht um die Laufzeit. Wer die Laufzeit optimieren will, ersetze PHP durch eine Compilersprache...

Es ist das Pferdearsch-Problem. Es ist einfach programmiertechnisch aufwändiger, statt ? nach :dings<wortende> zu suchen und dann noch die gefundenen Namen auf ein Array mit benannten Parametern zu mappen. Und darum - vermute ich - hat der Erfinder der Prepared Statements es erstmal mit Fragezeichen gelöst und einem 1:1 Mapping von Fragezeichenposition zur Werteposition. Das ist viel einfacher zu programmieren, und ja, es ist auch deutlich fixer. 1980 - oder wann auch immer die prepared statements erfunden wurden - war das relevant.

Bis dann irgendwer mal auf die Idee kam, dass Namen sinnvoller sein könnten, hatten schon viele andere das Fragezeichen als Syntax übernommen. Und dann kam der Fluch der Kompatibilität: Mit benannten Parametern muss man das execute()-API zur Datenbank ändern, weil das Parameter-Array auf einmal nicht mehr ein Werte-Array ist (ggf. ergänzt durch einen String mit Typ-Hinweisen), sondern plötzlich aus richtigen Parameterdeskriptoren bestehen muss. Zumindest den MySQLern war das zu aufwändig, da gehen bis heute nur die Fragezeichen.

Rolf