次の方法で共有


文字データをストリームとして取得する方法

SQL Server Driver for PHP は、サーバーから大量のデータを取得するために、PHP ストリームを利用します。このトピックの例では、文字データをストリームとして取得する方法を示します。

次の例では、AdventureWorks データベースの Production.ProductReview テーブルから行を取得します。返される行の Comments フィールドはストリームとして取得され、PHP の fpassthru 関数を使用して表示されます。

データをストリームとして取得するには、sqlsrv_fetch および sqlsrv_get_field を使用し、戻り値の型を文字ストリームとして指定します。この戻り値の型を指定するには、定数 SQLSRV_PHPTYPE_STREAM を使用します。sqlsrv 定数の詳細については、「SQLSRV 定数」を参照してください。

この例では、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 Transact-SQL query. */
$tsql = "SELECT ReviewerName, 
               CONVERT(varchar(32), ReviewDate, 107) AS [ReviewDate],
               Rating, 
               Comments 
         FROM Production.ProductReview 
         WHERE ProductReviewID = ? ";

/* Set the parameter value. */
$productReviewID = 1;
$params = array( $productReviewID);

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

/* Retrieve and display the data. The first three fields are retrieved
as strings and the fourth as a stream with character encoding. */
if(sqlsrv_fetch( $stmt ) === false )
{
     echo "Error in retrieving row.\n";
     die( print_r( sqlsrv_errors(), true));
}

echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
echo "Date: ".sqlsrv_get_field( $stmt, 1 )."\n";
echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."\n";
echo "Comments: ";
$comments = sqlsrv_get_field( $stmt, 3, 
                             SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
fpassthru($comments);

/* Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

最初の 3 つのフィールドには PHP の戻り値の型が指定されていないため、各フィールドは既定の PHP 型に従って返されます。既定の PHP データ型の詳細については、「既定の PHP データ型」を参照してください。PHP の戻り値の型を指定する方法の詳細については、「PHP データ型を指定する方法」を参照してください。

参照

概念

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

その他のリソース

データの取得
ストリームとしてのデータの取得