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