Поделиться через


PDO::quote

Скачать драйвер PHP

Обрабатывает строку для использования в запросе, заключая входную строку в кавычки, как того требует основная база данных 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').

  1. PDO::P ARAM_STR_NATL — это новый тип для строк Юникода, который применяется в операции побитового ИЛИ со значением PDO::PARAM_STR
  2. PDO::P ARAM_STR_CHAR — это новый тип для строк, отличных от Юникода, который применяется в операции побитового ИЛИ со значением PDO::PARAM_STR
  3. 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'
?>

См. также

Класс PDO

PDO