PDO::quote
根据基础 SQL Server 数据库的需要,通过用引号将输入字符串括起来处理字符串,以供在查询中使用。 PDO::quote 将使用适用于 SQL Server 的引号样式对输入字符串内的特殊字符进行转义。
语法
string PDO::quote( $string[, $parameter_type ] )
参数
$string:要用引号括起来的字符串。
$parameter_type:指示数据类型的可选(整数)符号。 默认值为 PDO::PARAM_STR。
PHP 7.2 中引入了新的 PDO 常量,以添加对绑定 Unicode 和非 Unicode 字符串的支持。 Unicode 字符串可以括在引号中,并使用 N 作为前缀(即 N'string' 而不是 'string')。
- PDO::PARAM_STR_NATL - Unicode 字符串的新类型,作为按位 OR 应用到 PDO::PARAM_STR
- PDO::PARAM_STR_CHAR - 非 Unicode 字符串的新类型,作为按位 OR 应用到 PDO::PARAM_STR
- PDO::ATTR_DEFAULT_STR_PARAM - 设置为 PDO::PARAM_STR_NATL 或 PDO::PARAM_STR_CHAR,以指示默认情况下 PDO::PARAM_STR 的按位 OR 的值
从版本 5.8.0 开始,可以将这些常量和 PDO::quote 一起使用。
返回值
可以传递给 SQL 语句的带引号字符串;如果失败,则为 false。
注解
已在 Microsoft Drivers for PHP for SQL Server的版本 2.0 中添加了对 PDO 的支持。
字符串转义示例
<?php
$database = "test";
$server = "(local)";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
$param = 'a \' g';
$param2 = $conn->quote( $param );
$query = "INSERT INTO Table1 VALUES( ?, '1' )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param));
$query = "INSERT INTO Table1 VALUES( ?, ? )";
$stmt = $conn->prepare( $query );
$stmt->execute(array($param, $param2));
?>
PDO 引用示例
下面的脚本演示了一些示例,说明扩展字符串类型如何影响带有 PHP 7.2+ 的 PDO::quote()。
<?php
$database = "test";
$server = "(local)";
$db = new PDO("sqlsrv:server=$server; Database=$database", "", "");
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL); // N'über'
$db->quote('foo'); // 'foo'
$db->setAttribute(PDO::ATTR_DEFAULT_STR_PARAM, PDO::PARAM_STR_NATL);
$db->quote('über'); // N'über'
$db->quote('foo', PDO::PARAM_STR | PDO::PARAM_STR_CHAR); // 'foo'
?>