(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)
PDO::quote — 为在查询中使用对字符串进行引用
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'