PDO::quote

下载 PHP 驱动程序

根据基础 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')。

  1. PDO::PARAM_STR_NATL - Unicode 字符串的新类型,作为按位 OR 应用到 PDO::PARAM_STR
  2. PDO::PARAM_STR_CHAR - 非 Unicode 字符串的新类型,作为按位 OR 应用到 PDO::PARAM_STR
  3. 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'
?>

另请参阅

PDO 类

PDO