mysqli::quote_string

mysqli_quote_string

(PHP 8 >= 8.6.0)

mysqli::quote_string -- mysqli_quote_string — Entrecomilla y escapa un string para su uso en una sentencia SQL

Descripción

Estilo orientado a objetos

public function mysqli::quote_string(string $string): string

Estilo procedimental

function mysqli_quote_string(mysqli $mysql, string $string): string

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.

Precaución

Seguridad: el juego de caracteres por defecto

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.

Parámetros

mysql

Solo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()

string

El 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.

Valores devueltos

Devuelve el string escapado encerrado entre comillas simples.

Ejemplos

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...

Véase también

+add a note

User Contributed Notes

There are no user contributed notes for this page.