(PHP 8 >= 8.6.0)
mysqli::quote_string -- mysqli_quote_string — Entrecomilla y escapa un string para su uso en una sentencia SQL
Estilo orientado a objetos
Estilo procedimental
Crea un literal de string SQL válido que puede utilizarse en una sentencia SQL. El string dado se escapa de la misma manera que con mysqli::real_escape_string(), teniendo en cuenta el juego de caracteres actual de la conexión, y el resultado se encierra entre comillas simples. Por lo tanto, el valor devuelto debe insertarse en la consulta sin añadir comillas adicionales a su alrededor.
A diferencia de mysqli::real_escape_string(), el resultado
también es seguro cuando el modo SQL NO_BACKSLASH_ESCAPES está
activado en la conexión.
El juego de caracteres debe definirse ya sea a nivel de servidor, o con la función API mysqli_set_charset() para que afecte a la función mysqli_quote_string(). Consulte la sección sobre los conceptos de juegos de caracteres para más información.
Nota:
El entrecomillado solo es adecuado para literales de tipo string. No hace seguros los identificadores, como los nombres de tablas o de columnas. Siempre que sea posible, utilice sentencias preparadas en lugar de construir las consultas manualmente.
mysqlSolo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()
stringEl string a entrecomillar y escapar.
Los caracteres codificados son NUL (ASCII 0),
\n, \r, \,
', ", y
CTRL+Z.
Si el modo SQL NO_BACKSLASH_ESCAPES está activado en
la conexión, solo se codifica ', duplicándolo.
Devuelve el string escapado encerrado entre comillas simples.
Ejemplo #1 Ejemplo con mysqli::quote_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 entrecomillado funcionará */
$query = sprintf("SELECT CountryCode FROM City WHERE name=%s", $mysqli->quote_string($city));
$result = $mysqli->query($query);
printf("La selección devolvió %d filas.\n", $result->num_rows);
/* esta consulta fallará, porque no entrecomillamos ni 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 entrecomillado funcionará */
$query = sprintf("SELECT CountryCode FROM City WHERE name=%s", mysqli_quote_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 entrecomillamos ni 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:
La selección devolvió 1 filas. 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...