PDO::quote

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

PDO::quote为在查询中使用对字符串进行引用

描述

public PDO::quote(string $string, int $type = PDO::PARAM_STR): string|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