Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Revertendo o efeito de `mysqli_real_escape_string`


A resposta monkeymatrix está incorreta para versões recentes do PHP (eu testei em 7.3). mysqli_real_escape_string() apenas escapa certos caracteres. Aqui está uma função que irá reverter isso:
function reverse_mysqli_real_escape_string($str) {
    return strtr($str, [
        '\0'   => "\x00",
        '\n'   => "\n",
        '\r'   => "\r",
        '\\\\' => "\\",
        "\'"   => "'",
        '\"'   => '"',
        '\Z' => "\x1a"
    ]);
 }

Em um aplicativo escrito corretamente, raramente deve haver a necessidade dessa função. Você deve usar o PDO com ligação de parâmetro para lidar com qualquer escape automaticamente. Eu só criei essa função para lidar com algum código legado que estava escapando de tudo na entrada e eu precisava de uma maneira de voltar aos dados originais.