Raisonnement à partir du nom de la méthode queryAsArray
, il semble que vous utilisez cette DbBase class à partir des commentaires de la page de manuel des fonctions MySQL
. Si oui, c'est la query
méthode qui supprime le caractère d'échappement des guillemets échappés :
function query($sql, &$records = null){
$sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
// …
}
Alors ce n'est pas un miracle que ton exemple fonctionne (je l'ai simplifié) :
$input = "', BAD SQL INJECTION --";
$sql = "SELECT '".mysql_real_escape_string($input)."'";
var_dump($sql); // string(33) "SELECT '\', BAD SQL INJECTION --'"
// everything’s OK ↑
$sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
var_dump($sql); // string(32) "SELECT '', BAD SQL INJECTION --'"
// Oops! ↑