(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'