Mysql
 sql >> Base de données >  >> RDS >> Mysql

Inverser l'effet de `mysqli_real_escape_string`

La réponse monkeymatrix est incorrecte pour les versions récentes de PHP (je l'ai testé sur 7.3). mysqli_real_escape_string() n'échappe qu'à certains caractères. Voici une fonction qui va l'inverser :

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

Dans une application correctement écrite, cette fonction devrait rarement être nécessaire. Vous devriez utiliser PDO avec une liaison de paramètre pour gérer automatiquement tout échappement. J'ai créé cette fonction uniquement pour gérer du code hérité qui échappait à tout en entrée et j'avais besoin d'un moyen de revenir aux données d'origine.