(PHP 5 >= 5.1.0, PECL pdo >= 0.2.1)
PDO::quote — Заключает строку в кавычки для использования в запросе
$string
[, int $parameter_type
= PDO::PARAM_STR
] )PDO::quote() заключает строку в кавычки (если требуется) и экранирует специальные символы внутри строки подходящим для драйвера способом.
Если вы используете эту функцию для построения SQL запросов, настоятельно рекомендуется пользоваться методом PDO::prepare() для подготовки запроса с псевдопеременными вместо использования PDO::quote() для вставки данных введенных пользователем в SQL запрос. Подготавливаемые запросы с параметрами не только компактней, удобней, устойчивей к SQL иньекциям, но и работают быстрее, нежели вручную построенные запросы, так как и клиент и сервер могут кэшировать такие запросы в уже скомпилированном виде.
Не все PDO драйверы реализуют этот метод (особенно PDO_ODBC). Предполагается, что вместо него будут использоваться подготавливаемые запросы.
Для корректной работы PDO::quote() набор символов должен быть задан либо на сервере, либо задаваться самим соединением с базой данных (это зависит от драйвера). Подробнее см. документацию к драйверу базы данных.
string
Экранируемая строка.
parameter_type
Представляет подсказку о типе данных первого параметра для драйверов, которые имеют альтернативные способы экранирования.
Возвращает экранированную строку, которую теоретически безопасно использовать
в теле SQL запроса. Возвращает FALSE
, если драйвер не поддерживает
экранирование.
Пример #1 Экранирование обычной строки
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* простая строка */
$string = 'Nice';
print "Неэкранированная строка: $string\n";
print "Экранированная строка: " . $conn->quote($string) . "\n";
?>
Результат выполнения данного примера:
Неэкранированная строка: Nice Экранированная строка: 'Nice'
Пример #2 Экранирование небезопасной строки
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* небезопасная строка */
$string = 'Naughty \' string';
print "Неэкранированная строка: $string\n";
print "Экранированная строка:" . $conn->quote($string) . "\n";
?>
Результат выполнения данного примера:
Неэкранированная строка: Naughty ' string Экранированная строка: 'Naughty '' string'
Пример #3 Экранирование сложной строки
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* сложная строка */
$string = "Co'mpl''ex \"st'\"ring";
print "Неэкранированная строка: $string\n";
print "Экранированная строка: " . $conn->quote($string) . "\n";
?>
Результат выполнения данного примера:
Неэкранированная строка: Co'mpl''ex "st'"ring Экранированная строка: 'Co''mpl''''ex "st''"ring'