Sven Rautenberg: SELECT schlägt fehl

Beitrag lesen

Moin!

Was soll eurer Meinung in der Datenbank stehen, wenn man \n\r"' oder meinetwegen auch "Texas Hold'em" der Funktion mysqli_real_escape_string() übergibt

In einfachen oder doppelten Hochkommas? Oder ist \n bzw. \r gar als deine hier gebrauchte Umschreibung für die nicht sichtbar darstellbaren Zeichen ASCII-Code 10 und ASCII-Code 13 zu verstehen

mysqli_real_escape_string() wird aus dem Anführungszeichen ' die Kombination ' machen, das " bleibt unverändert, genauso die ASCII-Zeichen 10 und 13. Ein Backslash hingegen würde verdoppelt: \.

und das Ergebnis wiederum an eine INSERT-Anweisung? Vielleicht habe ich ja auch etwas Grundsätzliches nicht oder falsch verstanden.

Wenn ich Prepared Statements verwende, muss ich Werte nicht escapen?

Nein, das erledigt das Prepared Statement für dich, weil es intern den SQL-Query zusammensetzt. Du hast zwei getrennte Strings, einmal das SQL, und dann einen (oder mehrere) String mit den Daten. Alle Zeichen darin sind pure Daten, es gibt keine Doppelbedeutung von gewissen Zeichen, also mußt du dich bei diesem String um keine Sonderbehandlung (Escaping) kümmern.

- Sven Rautenberg

--
"Love your nation - respect the others."