sql >> Base de Datos >  >> RDS >> Mysql

Revertir el efecto de `mysqli_real_escape_string`

La respuesta de monkeymatrix es incorrecta para las versiones recientes de PHP (lo probé en 7.3). mysqli_real_escape_string() solo escapa a ciertos caracteres. Aquí hay una función que lo revertirá:

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

En una aplicación correctamente escrita, rara vez debería haber necesidad de esta función. Debería usar PDO con enlace de parámetros para manejar cualquier escape automáticamente. Solo creé esta función para manejar un código heredado que se escapaba de todo en la entrada y necesitaba una forma de volver a los datos originales.