略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: PDO::quote

2024-11-15

PDO::quote

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

PDO::quote 为 SQL 查询里的字符串添加引号

说明

public PDO::quote(string $string, int $parameter_type = PDO::PARAM_STR): string

PDO::quote() 为输入的字符串添加引号(如果有需要),并对特殊字符进行转义,且引号的风格和底层驱动适配。

如果使用此函数构建 SQL 语句,强烈建议使用 PDO::prepare() 配合参数构建,而不是用 PDO::quote() 把用户输入的数据拼接进 SQL 语句。 使用 prepare 语句处理参数,不仅仅可移植性更好,而且更方便、免疫 SQL 注入;相对于拼接 SQL 更快,客户端和服务器都能缓存编译后的 SQL 查询。

不是所有的 PDO 驱动都实现了此功能(例如 PDO_ODBC)。 考虑使用 prepare 代替。

警告

安全性:默认字符集

字符集不仅仅要在数据库服务器上设置,也要为数据库连接设置(取决于驱动),它影响了 PDO::quote()。 更多信息可参考PDO 驱动文档

参数

string

要添加引号的字符串。

parameter_type

为驱动提示数据类型,以便选择引号风格。

返回值

返回加引号的字符串,理论上可以安全用于 SQL 语句。 如果驱动不支持这种方式,将返回 false

范例

示例 #1 普通字符串加引号

<?php
$conn 
= new PDO('sqlite:/home/lynn/music.sql3');

/* 简单字符串 */
$string 'Nice';
print 
"Unquoted string: $string\n";
print 
"Quoted string: " $conn->quote($string) . "\n";
?>

以上例程会输出:

Unquoted string: Nice
Quoted string: 'Nice'

示例 #2 危险字符串加引号

<?php
$conn 
= new PDO('sqlite:/home/lynn/music.sql3');

/* 危险字符串 */
$string 'Naughty \' string';
print 
"Unquoted string: $string\n";
print 
"Quoted string:" $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 
"Unquoted string: $string\n";
print 
"Quoted string: " $conn->quote($string) . "\n";
?>

以上例程会输出:

Unquoted string: Co'mpl''ex "st'"ring
Quoted string: 'Co''mpl''''ex "st''"ring'

参见

add a noteadd a note

User Contributed Notes

There are no user contributed notes for this page.

官方地址:https://www.php.net/manual/en/pdo.quote.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3