PDO::quote

PHP ドライバーのダウンロード

基になる SQL Server データベースでの必要に応じて、入力文字列を引用符で囲むことにより、クエリで使用できるように文字列を処理します。 PDO::quote は、SQL Server に適した引用符スタイルを使用して、入力文字列内の特殊文字をエスケープします。

構文

  
string PDO::quote( $string[, $parameter_type ] )  

パラメーター

$string: 引用符で囲む文字列。

$parameter_type:データ型を示す省略可能な (整数) シンボル。 既定は PDO::PARAM_STR です。

Unicode および非 Unicode 文字列のバインドのサポートを追加するために、PHP 7.2 で新しい PDO 定数が導入されました。 Unicode 文字列は、プレフィックスとして N を使用して引用符で囲むことができます (つまり、'string' ではなく N'string')。

  1. PDO::PARAM_STR_NATL - ビット単位の OR として PDO::PARAM_STR に適用される、Unicode 文字列の新しい種類
  2. PDO::PARAM_STR_CHAR - ビット単位の OR として PDO::PARAM_STR に適用される、非 Unicode 文字列の新しい種類
  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。

解説

PDO のサポートは Microsoft SQL Server 用 Drivers for PHPのバージョン 2.0 で追加されました。

文字列エスケープの例

<?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::quote の例

次のスクリプトでは、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