mysqli::real_escape_string

mysqli_real_escape_string

(PHP 5, PHP 7, PHP 8)

mysqli::real_escape_string -- mysqli_real_escape_stringProtege los caracteres especiales de un string para su uso en una consulta SQL, teniendo en cuenta el juego de caracteres actual de la conexión

Descripción

Estilo orientado a objetos

public mysqli::real_escape_string(string $string): string

Estilo por procedimientos

mysqli_real_escape_string(mysqli $mysql, string $string): string

Esta función se utiliza para crear un string SQL válido que podrá ser utilizado en una consulta SQL. El string string se codifica para producir un string SQL escapado, teniendo en cuenta el juego de caracteres actual de la conexión.

Precaución

Seguridad: El juego de caracteres por defecto

El juego de caracteres debe ser definido ya sea a nivel de servidor, o con la función API mysqli_set_charset() para que afecte a la función mysqli_real_escape_string(). Ver la sección sobre los conceptos de juegos 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()

string

El string a escapar.

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

Valores devueltos

Devuelve un string escapado.

Ejemplos

Ejemplo #1 Ejemplo con mysqli::real_escape_string()

Estilo orientado a objetos

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$city = "'s-Hertogenbosch";

/* esta consulta con $city escapado funcionará */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
$mysqli->real_escape_string($city));
$result = $mysqli->query($query);
printf("La selección devolvió %d filas.\n", $result->num_rows);

/* esta consulta fallará, porque no escapamos $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = $mysqli->query($query);

Estilo por procedimientos

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

$city = "'s-Hertogenbosch";

/* esta consulta con $city escapado funcionará */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
mysqli_real_escape_string($mysqli, $city));
$result = mysqli_query($mysqli, $query);
printf("La selección devolvió %d filas.\n", mysqli_num_rows($result));

/* esta consulta fallará, porque no escapamos $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = mysqli_query($mysqli, $query);

El resultado de los ejemplos sería algo similar a:

Select returned 1 rows.

Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's-Hertogenbosch'' at line 1 in...

Ver también