mysqli::real_escape_string

mysqli_real_escape_string

(PHP 5, PHP 7)

mysqli::real_escape_string -- mysqli_real_escape_stringEscapa los caracteres especiales de una cadena para usarla en una sentencia SQL, tomando en cuenta el conjunto de caracteres actual de la conexión

Descripción

Estilo orientado a objetos

mysqli::escape_string ( string $escapestr ) : string
mysqli::real_escape_string ( string $escapestr ) : string

Estilo por procedimientos

mysqli_real_escape_string ( mysqli $link , string $escapestr ) : string

Esta función se usa para crear una cadena SQL legal que se puede usar en una sentencia SQL. La cadena dada es codificada a una cadena SQL escapada, tomando en cuenta el conjunto de caracteres actual de la conexión.

Precaución

Seguridad: el conjunto de caracteres predeterminado

El conjunto de caracteres debe ser establecido a nivel del servidor, o con la función mysqli_set_charset() de la API para que afecte a mysqli_real_escape_string(). Véase la sección de conceptos sobre conjuntos de caracteres para más información.

Parámetros

link

Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()

escapestr

La cadena a escapar.

Los caracteres codificados son NUL (ASCII 0), \n, \r, \, ', ", y Control-Z.

Valores devueltos

Devuelve una cadena escapada.

Ejemplos

Ejemplo #1 Ejemplo de mysqli::real_escape_string()

Estilo orientado a objetos

<?php
$mysqli 
= new mysqli("localhost""mi_usuario""mi_contraseña""world");

/* verificar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TEMPORARY TABLE miCiudad LIKE City");

$ciudad "'s Hertogenbosch";

/* esta consulta fallará debido a que no escapa $ciudad */
if (!$mysqli->query("INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("Error: %s\n"$mysqli->sqlstate);
}

$ciudad $mysqli->real_escape_string($ciudad);

/* esta consulta con $ciudad escapada funcionará */
if ($mysqli->query("INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("%d fila insertada.\n"$mysqli->affected_rows);
}

$mysqli->close();
?>

Estilo por procedimientos

<?php
$enlace 
mysqli_connect("localhost""mi_usuario""mi_contraseña""world");

/* verificar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

mysqli_query($enlace"CREATE TEMPORARY TABLE miCiudad LIKE City");

$ciudad "'s Hertogenbosch";

/* esta consulta fallará debido a que no escapa $ciudad */
if (!mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("Error: %s\n"mysqli_sqlstate($enlace));
}

$ciudad mysqli_real_escape_string($enlace$ciudad);

/* esta consulta con $ciudad escapada funcionará */
if (mysqli_query($enlace"INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
    
printf("%d fila insertada.\n"mysqli_affected_rows($enlace));
}

mysqli_close($enlace);
?>

El resultado de los ejemplos sería:

Error: 42000
1 fila insertada.

Notas

Nota:

Para quienes estén acostumbrados a usar mysql_real_escape_string(), se ha de observar que el argumento de mysqli_real_escape_string() difiere de lo que espera mysql_real_escape_string(). El identificador enlace va primero en mysqli_real_escape_string(), mientras que la cadena a escapar va primero en mysql_real_escape_string().

Ver también