dedlfix: doppeltes %-Zeichen?

Beitrag lesen

Hi!

Die Kombinationen mit % wofür stehen die? Was soll mit der Ausfilterung verhindert werden?

Es sind Platzhalter, analog/ähnlich zur schon mal erwähnten Funktion sprintf(). Und es ähnelt auch ein wenig dem Prepared-Statements-Prinzip. Ich kenne Drupal nicht, aber ich nehme an, die Philosophie ist, dass du Statements nicht durch Einfügen von Werten erstellen/erweitern/anpassen/wasauchimmer sollst, sondern Platzhalter gemäß dem Datentyp einbaust und die eigentlichen Werte per extra Parameter dazureichst. Ein Beispiel für die Verwendung von sprintf() findest du unter anderem im Kontextwechsel-Artikel. In deinem Fall brauchst du allerdings keine maskierten Parameter zu übergeben, denn um das kontextgerechte Behandeln der Typen kümmert sich die Funktion. Du müsstest nur ... LIKE '%s' einbauen und zusätzlich %Film und Utopie% übergeben. Dann sollte alles gut werden. Es kann allerdings auch sein, dass diese Funktion nicht nur maskiert sondern auch quotiert. Dann darf nur ... LIKE %s im Statement stehen. Das sollte aber die Dokumentation von Drupal hergeben, wie Datenbankzugriffe gedacht sind. Es ist sehr empfehlenswert, sich vor dem Ändern/Erweitern solcher Systeme sich in deren Philosophie einzuarbeiten, wie das Vorgehen bei solchen und anderen Standardaufgaben vorgesehen ist.

Lo!