PDO::quote

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

PDO::quote — Укладає рядок у лапки для використання у запиті

Опис

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

PDO::quote() укладає рядок у лапки (якщо потрібно) і екранує спеціальні символи всередині рядка відповідним для драйвера способом.

Якщо ви використовуєте цю функцію для побудови запитів SQL, наполегливо рекомендується користуватися методом PDO::prepare() для підготовки запиту з псевдозмінними замість використання PDO::quote() для вставки даних, введених користувачем у SQL запит. Підготовлювані запити з параметрами не тільки компактнішими, зручнішими, стійкішими до SQL-ін'єкції, але й працюють швидше, ніж вручну побудовані запити, оскільки клієнт і сервер можуть кешувати такі запити у вже скомпільованому вигляді.

Не всі драйвери PDO реалізують цей метод (особливо PDO_ODBC). Передбачається, що замість нього будуть використовуватися запити, що готуються.

Застереження

Безпека: набір символів за промовчанням

Для коректної роботи PDO::quote() набір символів має бути заданий або сервері, або задаватися самим з'єднанням з базою даних (залежить від драйвера). Детальніше дивіться документацію до драйвера бази даних

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

string

Рядок, що екранується.

type

Надає підказку про тип даних драйверів, які мають альтернативні способи екранування. Наприклад, PDO_PARAM_LOB вкаже драйверу екранувати двійкові дані.

Значення, що повертаються

Повертає екранований рядок, який теоретично безпечно використовувати в тілі запиту SQL. Повертає **false**Якщо драйвер не підтримує екранування.

Приклади

Приклад #1 Екранування звичайного рядка

Loading...

Результат виконання наведеного прикладу:

Неэкранированная строка: Nice
Экранированная строка: 'Nice'

Приклад #2 Екранування небезпечного рядка

Loading...

Результат виконання наведеного прикладу:

Неэкранированная строка: Naughty ' string
Экранированная строка: 'Naughty '' string'

Приклад #3 Екранування складного рядка

Loading...

Результат виконання наведеного прикладу:

Неэкранированная строка: Co'mpl''ex "st'"ring
Экранированная строка: 'Co''mpl''''ex "st''"ring'

Дивіться також

  • PDO::prepare() - готує запит до виконання та повертає пов'язаний із цим запитом об'єкт
  • PDOStatement::execute() - Запускає підготовлений запит на виконання