跳转到主要内容

quote-string

mysqli::quote_string

mysqli_quote_string

Quotes and escapes a string for use in an SQL statement

ENTITY

ENTITY

public

string

mysqli::quote_string

string

string

ENTITY

string

mysqli_quote_string

mysqli

mysql

string

string

Unlike mysqli::real_escape_string, the result is also safe when the NO_BACKSLASH_ESCAPES SQL mode is enabled on the connection.

[!CAUTION] The character set must be set either at the server level, or with the API function mysqli_set_charset for it to affect mysqli_quote_string. See the concepts section on character sets for more information.

[!NOTE] Quoting is only suitable for string literals. It does not make identifiers, such as table or column names, safe. Whenever possible, use prepared statements instead of building queries manually.

ENTITY

string
The string to be quoted and escaped.

Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and CTRL+Z. If the NO_BACKSLASH_ESCAPES SQL mode is enabled on the connection, only ' is encoded, by doubling it.

ENTITY

Returns the escaped string enclosed in single quotes.

ENTITY

mysqli::quote_string example

ENTITY

<?php

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

$city = "'s-Hertogenbosch";

/* this query with quoted $city will work */
$query = sprintf("SELECT CountryCode FROM City WHERE name=%s", $mysqli->quote_string($city));
$result = $mysqli->query($query);
printf("Select returned %d rows.\n", $result->num_rows);

/* this query will fail, because we didn't quote and escape $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = $mysqli->query($query);

   

ENTITY

<?php

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

$city = "'s-Hertogenbosch";

/* this query with quoted $city will work */
$query = sprintf("SELECT CountryCode FROM City WHERE name=%s", mysqli_quote_string($mysqli, $city));
$result = mysqli_query($mysqli, $query);
printf("Select returned %d rows.\n", mysqli_num_rows($result));

/* this query will fail, because we didn't quote and escape $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = mysqli_query($mysqli, $query);

   

ENTITY

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

ENTITY

mysqli::real_escape_string

mysqli::set_charset