sqlsrv_prepare
指定した接続に関連付けられたステートメント リソースを作成します。
注意
この関数は複数クエリの実行に最適です。詳細については、「クエリを複数回実行する方法」を参照してください。
構文
sqlsrv_prepare( resource $conn, string $tsql [, array $params [, array $options]])
パラメータ
$conn: 作成されたステートメントに関連付けられている接続リソース。
$tsql: 作成されたステートメントに対応する Transact-SQL 式。
$params [オプション]: パラメーター化されたクエリのパラメーターに対応する値の array。配列の各要素は次のいずれかです。
リテラル値。
PHP 変数への参照。
次の構造を持つ array。
array(&$value [, $direction [, $phpType [, $sqlType]]])
注意
クエリ パラメーターとして渡される変数は、値ではなく、参照で渡される必要があります。たとえば、
$myVariable
の代わりに&$myVariable
を渡します。パラメーターに値を使用したクエリを実行すると、PHP の警告が表示されます。次の表で、これらの配列要素を説明します。
要素 説明 &$value
リテラル値または PHP 変数への参照。
$direction [オプション]
パラメーターの方向を指定するために使用される SQLSRV_PARAM_* 定数。SQLSRV_PARAM_IN、SQLSRV_PARAM_OUT、SQLSRV_PARAM_INOUT のいずれかです。既定値は SQLSRV_PARAM_IN です。
$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 が返されます。
例
次の例では、ステートメントを準備して実行します。ステートメントを実行すると (sqlsrv_execute を参照)、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 Transact-SQL query. */
$tsql = "UPDATE Sales.SalesOrderDetail
SET OrderQty = ?
WHERE SalesOrderDetailID = ?";
/* Assign parameter values. */
$param1 = 5;
$param2 = 10;
$params = array( &$param1, &$param2);
/* Prepare the statement. */
if( $stmt = sqlsrv_prepare( $conn, $tsql, $params))
{
echo "Statement prepared.\n";
}
else
{
echo "Statement could not be prepared.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Execute the statement. */
if( sqlsrv_execute( $stmt))
{
echo "Statement executed.\n";
}
else
{
echo "Statement could not be executed.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
参照
処理手順
パラメーター化されたクエリを実行する方法
データをストリームとして送信する方法
概念
その他のリソース
API リファレンス (SQL Server Driver for PHP)
設計上の注意事項
方向性のあるパラメーターの使用