sqlsrv_query

ステートメントを準備して実行します。

注意

この関数は 1 回限りのクエリの実行に適しています。詳細については、「単一のクエリを実行する方法」を参照してください。

構文

sqlsrv_query( resource $conn, string $tsql [, array $params [, array $options]])

パラメータ

$conn: 準備されたステートメントに関連付けられている接続リソース。

$tsql: 準備されたステートメントに対応する Transact-SQL 式。

$params [オプション]: パラメーター化されたクエリのパラメーターに対応する値の array。配列の各要素は次のいずれかです。

  • リテラル値。

  • PHP 変数。

  • 次の構造を持つ array

    array($value [, $direction [, $phpType [, $sqlType]]])
    

    配列の各要素の説明を次の表に示します。

    要素 説明

    $value

    リテラル値、PHP 変数、または PHP 参照変数。

    $direction [オプション]

    パラメーターの方向を指定するために使用される SQLSRV_PARAM_* 定数。SQLSRV_PARAM_INSQLSRV_PARAM_OUTSQLSRV_PARAM_INOUT のいずれかです。既定値は SQLSRV_PARAM_IN です。

    PHP の定数の詳細については、「SQLSRV 定数」を参照してください。

    $phpType [オプション]

    戻り値の PHP データ型を指定する SQLSRV_PHPTYPE_* 定数。

    $sqlType [オプション]

    入力値の SQL Server データ型を指定する SQLSRV_SQLTYPE_* 定数。

$options [オプション]: クエリ プロパティを設定する連想配列。サポートされるキーは次のとおりです。

キー サポートされる値 説明

QueryTimeout

正の整数値。

クエリ タイムアウトを秒単位で設定します。既定では、ドライバーは結果を無期限に待機します。

SendStreamParamsAtExec

true またはfalse

既定値は true です。

実行時にすべてのストリーム データを送信する (true) か、ストリーム データをチャンク単位で送信する (false) ように、ドライバーを構成します。既定値は true です。詳細については、「sqlsrv_send_stream_data」を参照してください。

スクロール可能

SQLSRV_CURSOR_FORWARD

SQLSRV_CURSOR_STATIC

SQLSRV_CURSOR_DYNAMIC

SQLSRV_CURSOR_KEYSET

このキーは、SQL Server Driver for PHP Version 1.1 で追加されました。

これらの値の詳細については、「カーソルの種類の指定と行の選択」を参照してください。

戻り値

ステートメント リソース。ステートメントを作成または実行できない場合、false が返されます。

次の例では、AdventureWorks データベースの Sales.SalesOrderDetail テーブルのフィールドを更新します。この例では、SQL Server と AdventureWorks データベースがローカル コンピューターにインストールされていることを前提としています。この例をコマンド ラインから実行した場合、すべての出力はコンソールに書き込まれます。

<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Set up the parameterized query. */
$tsql = "UPDATE Sales.SalesOrderDetail 
         SET OrderQty = ( ?) 
         WHERE SalesOrderDetailID = ( ?)";

/* Assign literal parameter values. */
$params = array( 5, 10);

/* Execute the query. */
if( sqlsrv_query( $conn, $tsql, $params))
{
      echo "Statement executed.\n";
} 
else
{
      echo "Error in statement execution.\n";
      die( print_r( sqlsrv_errors(), true));
}

/* Free connection resources. */
sqlsrv_close( $conn);
?>

参照

処理手順

パラメーター化されたクエリを実行する方法
データをストリームとして送信する方法

概念

ドキュメントのコード例について

その他のリソース

API リファレンス (SQL Server Driver for PHP)
設計上の注意事項
方向性のあるパラメーターの使用