共用方式為


比較資料擷取函數

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_arraysqlsrv_fetch_object 函數會將結果集的整個資料列載入指令碼記憶體中,並根據預設 PHP 資料類型傳回資料。如需有關預設 PHP 類型的資訊,請參閱<預設 PHP 資料類型>。

相較之下,sqlsrv_fetch/sqlsrv_get_field 的組合只會將結果集資料列的一個欄位載入指令碼記憶體中,並允許指定 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));

另請參閱

其他資源

設計考量
擷取資料