PDO::quote
將引號放在基礎 SQL Server 資料庫所需的輸入字串前後,以處理查詢中使用的字串。 PDO::quote 將使用適合 SQL Server 的引號樣式,逸出輸入字串中的特殊字元。
語法
string PDO::quote( $string[, $parameter_type ] )
參數
$string:要加上引號的字串。
$parameter_type:指出資料類型的選擇性 (整數) 符號。 預設值是 PDO::PARAM_STR。
PHP 7.2 引進了新的 PDO 常數,以新增繫結 Unicode 和非 Unicode 字串 \(英文\) 的支援。 Unicode 字串可以用引號括住,並以 N 作為前置詞 (例如 N'string',而不是 'string')。
- PDO::PARAM_STR_NATL - 適用於 Unicode 字串的新類型,以位元 OR 的形式套用至 PDO::PARAM_STR
- PDO::PARAM_STR_CHAR - 適用於非 Unicode 字串的新類型,以位元 OR 的形式套用至 PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM - 設定為 PDO::PARAM_STR_NATL 或 PDO::PARAM_STR_CHAR 以表示以位元 OR 的形式套用至 PDO::PARAM_STR 的預設值
從版本 5.8.0 開始,可以搭配 PDO::quote 使用這些常數。
傳回值
可以傳遞至 SQL 語句的引號字串,如果失敗則為 false。
備註
Microsoft Drivers for PHP for SQL Server 2.0 版已新增 PDO 支援。
字串逸出範例
<?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 報價範例
下列指令碼顯示了一些範例,這些範例說明擴充字串類型如何影響 PHP 7.2+ 的 PDO::quote()。
<?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'
?>