PHP Conference Japan 2024

SQLite3::escapeString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::escapeString回傳已正確跳脫的字串

說明

public static SQLite3::escapeString(字串 $string): 字串

回傳一個已正確跳脫的字串,可安全地包含在 SQL 陳述式中。

警告

此函式(尚)不支援二進位安全!

若要正確處理可能包含 NUL 字元的 BLOB 欄位,請改用 SQLite3Stmt::bindParam()

參數

字串

要跳脫的字串。

返回值

返回一個已正確跳脫的字串,可以在 SQL 陳述式中安全地使用。

注意事項

警告

在 SQLite 查詢中,不應使用 addslashes() 來為字串加上引號;否則在擷取資料時會導致奇怪的結果。

新增註釋

使用者貢獻的註釋 2 則註釋

alec at alecnewman dot com
14 年前
這個函式不跳脫雙引號的原因是雙引號與名稱(相當於 MySQL 中的反引號)一起使用,例如表格或欄位名稱,而單引號則用於值。

記住這一點很重要,尤其是來自其他 SQL 實作方式。它可能會導致奇怪的問題,例如,查詢

SELECT * FROM table WHERE column1="column1"

實際上會返回每一筆記錄,因為 column1 總是等於 column1。這應該改為

SELECT * FROM table WHERE column1='column1'

雙引號不會被函式跳脫,因為它們在單引號字串中不會被特殊解譯。
nhl261 at yahoo dot com
10 年前
如果字串包含 "\0" 字元,請小心。
參見:https://bugs.php.net/bug.php?id=63419
To Top