Mysql
 sql >> Database >  >> RDS >> Mysql

Invertire l'effetto di `mysqli_real_escape_string`

La risposta monkeymatrix non è corretta per le versioni recenti di PHP (l'ho testato su 7.3). mysqli_real_escape_string() sfugge solo a determinati caratteri. Ecco una funzione che lo invertirà:

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

In un'applicazione scritta correttamente, raramente dovrebbe essere necessaria questa funzione. Dovresti usare PDO con associazione di parametri per gestire automaticamente qualsiasi escape. Ho creato questa funzione solo per gestire del codice legacy che sfuggiva a tutto in input e avevo bisogno di un modo per tornare ai dati originali.