(沒有版本資訊,可能只在 Git 中)
sqlsrv_fetch_object — 將結果集中的下一列資料作為物件擷取
$stmt
,$className
= ?,$ctorParams
= ?,$row
= ?,$offset
= ?將結果集中下一筆資料列作為指定類別的實例擷取,其屬性與資料列欄位名稱相符,且值對應於資料列欄位值。
stmt
由 sqlsrv_query() 或 sqlsrv_execute() 建立的陳述式資源。
className
要實例化的類別名稱。如果未指定類別名稱,則會實例化 stdClass。
ctorParams
傳遞給指定類別建構函式的值。如果指定類別的建構函式需要參數,則必須提供 ctorParams 陣列。
row
要存取的資料列。此參數僅在使用可捲動的游標準備指定陳述式時才能使用。在這種情況下,此參數可以採用下列其中一個值
offset
如果 row 參數設定為 SQLSRV_SCROLL_ABSOLUTE
或 SQLSRV_SCROLL_RELATIVE
,則指定要存取的資料列。請注意,結果集中的第一列索引為 0。
範例 #1 sqlsrv_fetch_object() 範例
以下範例示範如何將資料列作為 stdClass 物件擷取。
<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT fName, lName FROM Table_1";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
// 擷取每一列作為一個物件。
// 因為沒有指定類別,每一列將會被擷取為一個 stdClass 物件。
// 屬性名稱對應到欄位名稱。
while( $obj = sqlsrv_fetch_object( $stmt)) {
echo $obj->fName.", ".$obj->lName."<br />";
}
?>
如果使用選用的 $className 參數指定類別名稱,且該類別具有與結果集欄位名稱相符的屬性,則對應的結果集值將會套用到這些屬性。如果結果集欄位名稱與類別屬性不相符,則會將具有結果集欄位名稱的屬性新增至物件,並將結果集值套用到該屬性。使用 $className 參數時,以下規則適用:
false
並將錯誤新增至錯誤集合。當處理的結果集包含多個同名欄位時,使用 sqlsrv_fetch_array() 或 sqlsrv_fetch() 搭配 sqlsrv_get_field() 的組合可能會更好。