PHP8 PDO::quote

2024-03-24 00:07 更新

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

PDO::quote — 為 SQL 查詢里的字符串添加引號

說明

public PDO::quote(string $string, int $type = PDO::PARAM_STR): string|false

PDO::quote() 為輸入的字符串添加引號(如果有需要),并對特殊字符進行轉(zhuǎn)義,且引號的風格和底層驅(qū)動適配。

如果使用此函數(shù)構(gòu)建 SQL 語句,強烈建議使用 PDO::prepare() 配合參數(shù)構(gòu)建,而不是用 PDO::quote() 把用戶輸入的數(shù)據(jù)拼接進 SQL 語句。使用 prepare 語句處理參數(shù),不僅僅可移植性更好,而且更方便、免疫 SQL 注入;相對于拼接 SQL 更快,客戶端和服務器都能緩存編譯后的 SQL 查詢。

不是所有的 PDO 驅(qū)動都實現(xiàn)了此功能(例如 PDO_ODBC)。 考慮使用 prepare 代替。

警告

安全性:默認字符集

字符集不僅僅要在數(shù)據(jù)庫服務器上設置,也要為數(shù)據(jù)庫連接設置(取決于驅(qū)動),它影響了 PDO::quote()。 更多信息可參考PDO 驅(qū)動文檔。

參數(shù) 

string

要添加引號的字符串。

type

為驅(qū)動程序的數(shù)據(jù)類型提供引號風格的提示。例如 PDO_PARAM_LOB 將告訴驅(qū)動程序轉(zhuǎn)義二進制數(shù)據(jù)。

返回值 

返回加引號的字符串,理論上可以安全用于 SQL 語句。 如果驅(qū)動不支持這種方式,將返回 false 。

示例 

示例 #1 普通字符串加引號

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

/* 簡單字符串 */
$string = 'Nice';
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>

以上示例會輸出:

Unquoted string: Nice
Quoted string: 'Nice'

示例 #2 危險字符串加引號

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

/* 危險字符串 */
$string = 'Naughty \' string';
print "Unquoted string: $string\n";
print "Quoted string:" . $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 "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>

以上示例會輸出:

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

參見 

  • PDO::prepare() - 預處理要執(zhí)行的語句,并返回語句對象
  • PDOStatement::execute() - 執(zhí)行預處理語句


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號