mysql real escape string

mysql_real_escape_string — Escapa caracteres especiales de una cadena para su uso en una sentencia SQL

Descripción

string mysql_real_escape_string ( string $cadena_no_escapada [, resource $id_enlace] ) Escapa todos los caracteres especiales en la cadena_no_escapada, tomando en cuenta el juego de caracteres actual de la conexión, de tal modo que sea seguro usarla con mysql_query(). Si se van a insertar datos binarios, debe usarse esta función. mysql_real_escape_string() llama a la función de la biblioteca MySQL mysql_real_escape_string, la cual coloca barras invertidas antes de los siguientes caracteres: \x00, \n, \r, \, , « y \x1a. Esta función debe usarse siempre (con algunas excepciones) para garantizar que los datos sean seguros antes de enviar una consulta a MySQL

Lista de parámetros

cadena_no_escapada
La cadena a ser escapada.
link_identifier
The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level warning is generated.

Valores retornados

Devuelve la cadena escapada, o FALSE en caso de que ocurra un error.

Ejemplos

Ejemplo sencillo de mysql_real_escape_string()

<?php // Conectarse $enlace = mysql_connect('mysql_host', 'mysql_usuario', 'mysql_contrasenya') OR die(mysql_error()); // Consulta $query = sprintf("SELECT * FROM usuarios WHERE usuario='%s' AND password='%s'", mysql_real_escape_string($usuario), mysql_real_escape_string($password)); ?>
Un ejemplo de un ataque de inyección SQL

<?php // Consultar la base de datos para verificar si hay una coincidencia de usuario $consulta = "SELECT * FROM usuarios WHERE usuario='{$_POST['username']}' AND password='{$_POST['password']}'"; mysql_query($consulta); // No revisamos $_POST['password'], ¡podría ser cualquier cosa que