次の方法で共有


データ取得関数の比較

SQL Server Driver for PHP で結果セットからデータを取得するには次の方法があります。

  • sqlsrv_fetch_array: データの次の行を数値インデックス付き配列、連想配列、またはその両方として取得します。

  • sqlsrv_fetch_object: データの次の行を PHP オブジェクトとして取得します。

  • sqlsrv_fetch/sqlsrv_get_field: 組み合わせて使用した場合に、データの行の指定したフィールドを取得します。sqlsrv_fetch 関数は、結果セットの次の行を読み取り可能にします。sqlsrv_get_field 関数は、現在の行の指定したフィールドからデータを取得します。

    注意

    sqlsrv_fetchsqlsrv_get_field の組み合わせでは、データへの前方参照専用のアクセスが提供されます。

sqlsrv_fetch_array 関数と sqlsrv_fetch_object 関数は、結果セットの行全体をスクリプト メモリに読み込み、既定の PHP データ型に応じてデータを返します (既定の PHP 型の詳細については、「既定の PHP データ型」を参照してください)。

一方、sqlsrv_fetch/sqlsrv_get_field の組み合わせでは、結果セットの行のフィールドが 1 つだけスクリプト メモリに読み込まれ、PHP の戻り値の型を指定できます (PHP の戻り値の型を指定する方法の詳細については、「PHP データ型を指定する方法」を参照してください)。この関数の組み合わせでは、データをストリームとして取得することもできます (データをストリームとして取得する方法の詳細については、「ストリームとしてのデータの取得」を参照してください)。

注意

上記の関数のいずれかを使用するときにループの終了条件として null 比較を使用しないでください。sqlsrv 関数ではエラーが発生すると false が返されるため、次のコードの sqlsrv_fetch_array でエラーが発生したときに無限ループが発生する可能性があります。

/*This code could result in an infinite loop. It is recommended that

you do NOT use null comparisons as the criterion for exiting loops,

as is done here. */

do{

$result = sqlsrv_fetch_array($stmt);

} while( !is_null($result));

参照

その他のリソース

設計上の注意事項
データの取得