PHP 大会日本 2024

SQLite3::escapeString

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

SQLite3::escapeString返回已正确转义的字符串

描述

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

返回已正确转义的字符串,以便安全地包含在 SQL 语句中。

警告

此函数尚不支持二进制安全!

要正确处理可能包含空字符的 BLOB 字段,请改用 SQLite3Stmt::bindParam()

参数

string

要转义的字符串。

返回值

返回一个已正确转义的字符串,可在 SQL 语句中安全使用。

备注

警告

不应使用 addslashes() 来为 SQLite 查询引用字符串;这会在检索数据时导致奇怪的结果。

添加备注

用户贡献的备注 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