Justamente, te lo ha añadido a la base de datos en vez de ejecutarlo
Al momento de generar la consulta, se escaparon y se consideraron caracteres normales.
Tu consulta probablemente haya sido ejecutada como
INSERT .......
VALUES(......, 'Probando: SELECT WHERE \' OR AND \"()'
Con los caracteres neutralizados. Pero eso no implica que esa es la forma en la que serán guardados, una vez que la cadena se procesa las \ se eliminan porque ya cumplieron su función de protección. Por eso la cadena se guarda tal cual se escribió.
Si no hubiera funcionado la función, habrías tenido un error de SQL al ejecutar la consulta.
A propósito, no entiendo el por qué de hacer doble trabajo si las comillas mágicas están activadas.
Creo que sería lo mismo y más eficiente hacer
Código PHP:
<?php
//para evitar sql injection
function sql_quote($valor) {
if(get_magic_quotes_gpc()) {
return $valor;
}
//comprueba si existe la función
if(function_exists("mysql_real_escape_string")) {
$valor = mysql_real_escape_string($valor);
}
//para las versiones < 4.3.0 de php usamos addslashes
else {
$valor = addslashes($valor);
}
return $valor;
}
Saludos.