sirve real_escape_string que para mysqli_real_escape_string mysqli_query mysql_real_escape_string expects exactly alternative php sql mysqli

php - que - real_escape_string pdo



diferencia entre mysqli_real_escape_string() y mysql_real_escape_string() (2)

Además de lo que dijo Quentin :

Ambos tipos de la misma salida.

mysql_real_escape_string

$ link es obligatorio para mysqli_real_escape_string.

mysql_real_escape_string

$ link es opcional

Si no se especifica el identificador de enlace, se utiliza el último enlace abierto por mysql_connect (). Si no, intente abrir uno sin parámetros.

He leído innumerables artículos, pero me preguntaba si alguien podría explicarme la diferencia en términos simples. Sé que ambos protegen contra la inyección sql y son por seguridad. pero si estoy usando mysqli para ejecutar una consulta, o la forma antigua de my_sql_query, ¿realmente importa cuál utilizo? ¿No son ambas envolturas de todos modos para la función sql?

¿Por qué el código siguiente no funciona?

$test="hello, ''there"; $db->real_escape_string($test); $db->query("INSERT INTO users (first_name) VALUES (''$test'')");


Toman en cuenta el conjunto de caracteres actual de la conexión, por lo que deben poder acceder a la conexión, por lo que debe usar la de la biblioteca con la que abrió la conexión.

Por lo general, deben evitarse a favor de declaraciones preparadas .

¿Por qué el código siguiente no funciona?

$test="hello, ''there"; $db->query("INSERT INTO users (first_name) VALUES (''$test'')", mysqli_real_escape_string($test));

Puede tener otros problemas, pero

  1. Usted escapa $test después de haberlo inyectado en el SQL
  2. No haces nada con el valor de retorno.

Esto debería ir antes de construir su cadena de SQL:

$test = mysqli_real_escape_string($link, $test);