PDO::quote

Stáhnout ovladač PHP

Zpracovává řetězec pro použití v dotazu tím, že kolem vstupního řetězce umístí uvozovky podle požadavků základní databáze SQL Server. PDO::quote unikne speciálních znaků uvnitř vstupního řetězce pomocí citovacího stylu vhodného pro SQL Server.

Syntax

  
string PDO::quote( $string[, $parameter_type ] )  

Parametry

$ Struna: Struna k citaci.

$ parameter_type: Volitelný (celočíselný) symbol označující datový typ. Výchozí je PDO::P ARAM_STR.

V PHP 7.2 byly zavedeny nové PDO konstanty, aby se přidala podpora pro vazbu Unicode a ne-Unicode řetězců. Unicode řetězce lze obklopit uvozovkami s předponou N (tj. N'string' místo 'string').

  1. PDO::P ARAM_STR_NATL - nový typ Unicode řetězců, který se aplikuje jako bitově NEBO na PDO::P ARAM_STR
  2. PDO::P ARAM_STR_CHAR - nový typ pro řetězce mimo Unicode, který se používá jako bitový NEBO pro PDO::P ARAM_STR
  3. PDO::ATTR_DEFAULT_STR_PARAM - nastavte buď na PDO::P ARAM_STR_NATL nebo PDO::P ARAM_STR_CHAR pro označení hodnoty jako bit-NEBO na PDO::P ARAM_STR ve výchozím nastavení

Od verze 5.8.0 můžete tyto konstanty používat s PDO::quote.

Návratová hodnota

Úvodní řetězec, který lze předat SQL příkazu, nebo nepravdivý pokud selže.

Remarks

Podpora PDO byla přidána ve verzi 2.0 Microsoft Drivers for PHP for SQL Server.

Příklad úniku řetězce

<?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));  
?>  

Příklad citátu z PDO

Následující skript ukazuje několik příkladů, jak rozšířené typy řetězců ovlivňují PDO::quote() v 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'
?>