real-escape-string
mysqli::real_escape_string
mysqli_real_escape_string
Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
ENTITY
ENTITY
public
string
mysqli::real_escape_string
string
string
ENTITY
string
mysqli_real_escape_string
mysqli
mysql
string
string
This function is used to create a legal SQL string that you can use in an SQL statement. The given string is encoded to produce an escaped SQL string, taking into account the current character set of the connection.
[!CAUTION] The character set must be set either at the server level, or with the API function
mysqli_set_charsetfor it to affectmysqli_real_escape_string. See the concepts section on character sets for more information.
[!WARNING] This function does not add quotes around the result; they must be added by the caller. If the
NO_BACKSLASH_ESCAPESSQL mode is enabled on the connection, only the single quote (') is escaped, so a value placed between double quotes (") can terminate the string and allow SQL injection. Use prepared statements instead. If that is not possible, use mysqli::quote_string, which always wraps the result in single quotes.
ENTITY
string
The string to be 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 an escaped string.
ENTITY
mysqli::real_escape_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 escaped $city will work */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
$mysqli->real_escape_string($city));
$result = $mysqli->query($query);
printf("Select returned %d rows.\n", $result->num_rows);
/* this query will fail, because we didn't 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 escaped $city will work */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
mysqli_real_escape_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 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_set_charset
mysqli_quote_string
谢谢你的反馈!