PHP Conference Japan 2024

PDO::quote

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

PDO::quote 將字串加上引號,以便在查詢中使用

說明

public PDO::quote(字串 $string, 整數 $type = PDO::PARAM_STR): 字串|false

PDO::quote() 會根據底層驅動程式的適當引號樣式,在輸入字串的周圍加上引號(如果需要),並跳脫輸入字串中的特殊字元。

如果您使用此函數來建構 SQL 陳述式,強烈建議您使用 PDO::prepare() 來準備具有繫結參數的 SQL 陳述式,而不是使用 PDO::quote() 將使用者輸入插入到 SQL 陳述式中。 具有繫結參數的預備陳述式不僅更具可攜性、更方便,而且可以避免 SQL 注入攻擊,而且執行速度通常比插入查詢快得多,因為伺服器端和用戶端都可以快取查詢的已編譯形式。

並非所有 PDO 驅動程式都實作此方法(尤其是 PDO_ODBC)。請考慮改用預備陳述式。

注意事項

安全性:預設字元集

必須在伺服器層級或資料庫連線本身內設定字元集(取決於驅動程式),才能影響 PDO::quote()。詳情請參閱特定驅動程式的說明文件

參數

string(字串)

要被引號括住的字串。

type(類型)

為具有替代引號樣式的驅動程式提供資料類型的提示。例如,PDO_PARAM_LOB 會告知驅動程式轉義二進位資料。

回傳值

回傳一個理論上可以安全地傳遞到 SQL 陳述式的引號括住的字串。如果驅動程式不支援這種引號方式,則回傳 false

範例

範例 #1 引號括住一般字串

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');

/* 簡單字串 */
$string = 'Nice';
print
"未引號括住的字串: $string\n";
print
"引號括住的字串: " . $conn->quote($string) . "\n";
?>

上述範例將輸出

Unquoted string: Nice
Quoted string: 'Nice'

範例 #2 引號括住危險字串

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');

/* 危險字串 */
$string = 'Naughty \' string';
print
"未引號括住的字串: $string\n";
print
"引號括住的字串: " . $conn->quote($string) . "\n";
?>

上述範例將輸出

Unquoted string: Naughty ' string
Quoted string: 'Naughty '' string'

範例 #3 引號括住複雜字串

<?php
$conn
= new PDO('sqlite:/home/lynn/music.sql3');

/* 複雜字串 */
$string = "Co'mpl''ex \"st'\"ring";
print
"未引號括住的字串: $string\n";
print
"引號括住的字串: " . $conn->quote($string) . "\n";
?>

上述範例將輸出

Unquoted string: Co'mpl''ex "st'"ring
Quoted string: 'Co''mpl''''ex "st''"ring'

另請參閱

新增筆記

使用者貢獻的筆記

此頁面沒有使用者貢獻的筆記。
To Top