(PHP 5, PHP 7, PHP 8)
mysqli::real_escape_string -- mysqli::escape_string -- mysqli_real_escape_string — Экранирует специальные символы в строке для использования в SQL-выражении, используя текущий набор символов соединения
Объектно-ориентированный стиль
$string
): stringПроцедурный стиль
Эта функция используется для создания допустимых в SQL строк, которые можно использовать в SQL выражениях. Заданная строка кодируется для создания экранированной строки SQL с учётом текущего набора символов подключения.
Набор символов должен быть задан либо на стороне сервера, либо с помощью API-функции mysqli_set_charset(). В противном случае mysqli_real_escape_string() работать не будет. За дополнительной информацией обращайтесь к документации наборы символов.
mysql
Только для процедурного стиля: объект mysqli, полученный с помощью mysqli_connect() или mysqli_init().
string
Строка, которую требуется экранировать.
Экранируемые символы NUL (ASCII 0)
,
\n
, \r
, \
,
'
, "
и
CTRL+Z.
Возвращает экранированную строку.
Пример #1 Пример использования mysqli::real_escape_string()
Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$city = "'s-Hertogenbosch";
/* этот запрос с экранированным $city будет работать */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
$mysqli->real_escape_string($city));
$result = $mysqli->query($query);
printf("Возвращённые строки: %d.\n", $result->num_rows);
/* этот запрос завершится ошибкой, потому что мы не экранировали $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = $mysqli->query($query);
Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
$city = "'s-Hertogenbosch";
/* этот запрос с экранированным $city будет работать */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
mysqli_real_escape_string($mysqli, $city));
$result = mysqli_query($mysqli, $query);
printf("Возвращённые строки: %d.\n", mysqli_num_rows($result));
/* этот запрос завершится ошибкой, потому что мы не экранировали $city */
$query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
$result = mysqli_query($mysqli, $query);
Результатом выполнения данных примеров будет что-то подобное:
Возвращённые строки: 1. 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...