Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Umkehrung des Effekts von `mysqli_real_escape_string`

Die Monkeymatrix-Antwort ist für neuere PHP-Versionen falsch (ich habe sie auf 7.3 getestet). mysqli_real_escape_string() maskiert nur bestimmte Zeichen. Hier ist eine Funktion, die es umkehrt:

function reverse_mysqli_real_escape_string($str) {
    return strtr($str, [
        '\0'   => "\x00",
        '\n'   => "\n",
        '\r'   => "\r",
        '\\\\' => "\\",
        "\'"   => "'",
        '\"'   => '"',
        '\Z' => "\x1a"
    ]);
 }

In einer sauber geschriebenen Anwendung sollte diese Funktion selten benötigt werden. Sie sollten PDO mit Parameterbindung verwenden, um Escapezeichen automatisch zu handhaben. Ich habe diese Funktion nur erstellt, um mit altem Code umzugehen, der alles bei der Eingabe maskierte, und ich brauchte einen Weg, um zu den ursprünglichen Daten zurückzukehren.