PDO::quote

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)

PDO::quote Форматирует строку в SQL-литерал

Описание

public PDO::quote(string $string, int $type = PDO::PARAM_STR): string|false

С параметрами по умолчанию метод PDO::quote() оборачивает входные строковые данные кавычками и попутно экранирует спецсимволы в стиле конкретного PDO-драйвера.

Разработчики языка настоятельно рекомендуют подготавливать запросы методом PDO::prepare() и привязывать параметры, а не интерполировать пользовательский ввод в SQL-инструкцию методом PDO::quote(). Подготовленные запросы с привязкой параметров проще в построении, универсальнее при переносе между БД, надёжнее в части устойчивости к SQL-инъекциям и часто выполняются быстрее запросов с интерполяцией за счёт кеширования скомпилированной формы запроса клиентом и сервером.

Метод поддерживается не каждым PDO-драйвером, например, в драйвере PDO_ODBC метод не реализовали. Лучше предпочесть подготовленные запросы вместо форматирования строк этим методом.

Предостережение

Безопасность: набор символов по умолчанию

Метод PDO::quote() работает корректно только при установке правильной кодировки символов — либо на уровне сервера БД, либо в настройках соединения, в зависимости от конкретного PDO-драйвера. Дополнительную информацию содержит документация к конкретному драйверу.

Список параметров

string

Строка, которую требуется отформатировать для безопасного встраивания в текст SQL-запроса.

type

Подсказка типа данных. В драйверах, которые учитывают параметр, подсказка определяет стиль обрамления кавычками и синтаксис экранирования. Флаг PDO::PARAM_LOB, например, укажет драйверу экранировать значение как двоичные данные.

Возвращаемые значения

Метод возвращает отформатированную строку, которую, теоретически, безопасно встраивать в тело 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'

Смотрите также

  • PDO::prepare() - Подготавливает запрос к выполнению и возвращает связанный с этим запросом объект
  • PDOStatement::execute() - Выполняет подготовленный запрос

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top