(PHP 5, PHP 7, PHP 8)
mysqli::real_escape_string -- mysqli_real_escape_string — Protege 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
Estilo orientado a objetos
Estilo procedimental
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.
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.
mysqlSolo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()
stringEl string a escapar.
Los caracteres codificados son NUL (ASCII 0), \n, \r, \, ', ", y CTRL+Z.
Devuelve un string escapado.
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 procedimental
<?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);Los ejemplos anteriores mostrarán 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...