PDO::quote
Обрабатывает строку для использования в запросе, заключая входную строку в кавычки, как того требует основная база данных SQL Server. PDO::quote будет экранировать специальные символы во входной строке с помощью стиля кавычек, подходящего для SQL Server.
Синтаксис
string PDO::quote( $string[, $parameter_type ] )
Параметры
$string: строка для заключения в кавычки.
$parameter_type: необязательный символ (целое число), указывающий тип данных. Значение по умолчанию — PDO::PARAM_STR.
Новые константы PDO появились в PHP 7.2 для поддержки сопоставления строк в Юникоде и других кодировках. Строки Юникода можно заключить в кавычки с префиксом N (например, N'string' вместо 'string').
- PDO::P ARAM_STR_NATL — это новый тип для строк Юникода, который применяется в операции побитового ИЛИ со значением PDO::PARAM_STR
- PDO::P ARAM_STR_CHAR — это новый тип для строк, отличных от Юникода, который применяется в операции побитового ИЛИ со значением PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM — задайте значение PDO::PARAM_STR_NATL или PDO::PARAM_STR_CHAR, чтобы задать значение по умолчанию для операции побитового ИЛИ со значением PDO::PARAM_STR
Начиная с версии 5.8.0 эти константы можно использовать с PDO::quote.
Возвращаемое значение
В кавычках строка, которую можно передать в инструкцию SQL или значение false, если сбой.
Замечания
Добавлена поддержка PDO версии 2.0 драйверов Майкрософт для PHP для SQL Server.
Пример экранирования строки
<?php
$database = "test";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
$param = 'a \' g';
$param2 = $conn->quote( $param );
$query = "INSERT INTO Table1 VALUES( ?, '1' )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param));
$query = "INSERT INTO Table1 VALUES( ?, ? )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param, $param2));
?>
Пример PDO quote
Следующий скрипт демонстрирует, как расширенные строковые типы влияют на работу PDO::quote () в PHP версии 7.2 и более поздних.
<?php
$database = "test";
$server = "(local)";
$db = new PDO("sqlsrv:server=$server; Database=$database", "", "");
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL); // N'über'
$db->quote('foo'); // 'foo'
$db->setAttribute(PDO::ATTR_DEFAULT_STR_PARAM, PDO::PARAM_STR_NATL);
$db->quote('über'); // N'über'
$db->quote('foo', PDO::PARAM_STR | PDO::PARAM_STR_CHAR); // 'foo'
?>