1unitedpower: Problem mit PHP Code

Beitrag lesen

Ich seh das etwas anders in dem Punkt. Wenn man das Denken durch Prinzipien ersetzt und vor allem irgendwann soweit ist, deren Einsatz nicht mehr zu hinterfragen, dann besteht auch die Gefahr, dass man nicht mehr erkennt, wenn die Anwendung ungünstig bis fehlerhaft ist.

$sql = sprintf("SELECT * FROM table WHERE id=%s", string_escape($id));

Prinzipiell sieht das nach Kontextbehandlung aus. Ist aber die falsche für den vorliegenden Kontext, wenn die IDs Zahlen sind. Man muss also zuindest darüber nachdenken, die richtige Behandlung zu verwenden. Gut, das sagtest du mit "entsprechend dem Kontext". Aber das verlangt eben doch mehr Aufmerksamkeit als eine "stumpfe" mechanische Arbeit. Letztere kann man sich zu einem guten Teil von der IDE abnehmen lassen, um so mehr Kapazitäten für den Inhalt freizubekommen.

Da bin ich voll und ganz bei dir, rein mechanisch ist das zugebenermaßen nicht. Dennoch ist es eine spürbare Entlasung nur die Frage zu stellen "Was ist der Zielkontext?" als sich zusätzlich noch zu fragen "Was ist der Wertebereich von x?" und "Können in dem Wertebereich SQL-Sonderzeichen vorkommen?". Vorallem in dynamisch typisierten Sprachen, wo eine IDE nur eingeschränkte Hilfestellungen im Umgang mit solchen Fragen leisten kann, ist das m.M.n. ein großer Gewinn.

Manchmal kann man auch die Frage nach dem Zielkontext noch ausblenden, im Falle von MySQL bspw. durch den Einsatz von Prepared-Statements.