使用迭代的範例 ( SQLSRV_SCROLL_ABSOLUTE )。
for ($i=0; $i < sqlsrv_num_rows($stmt); $i++) {
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC, SQLSRV_SCROLL_ABSOLUTE , $i );
echo "第一欄的值: '.trim($row[0]).', 第二欄的值: '.trim($row[1]);
}
(沒有版本資訊,可能只存在於 Git 中)
sqlsrv_fetch_array — 將列以陣列形式返回
以關聯式陣列、數字索引陣列或兩者 (預設值) 的形式傳回下一筆可用的資料列。
stmt
由 sqlsrv_query 或 sqlsrv_prepare 傳回的陳述式資源。
fetchType
一個預先定義的常數,指定要傳回的陣列類型。可能的值為 SQLSRV_FETCH_ASSOC
(關聯式陣列)、SQLSRV_FETCH_NUMERIC
(數字索引陣列)和 SQLSRV_FETCH_BOTH
(兩者,預設值)。
當結果集中有多個同名欄位時,不應使用 SQLSRV_FETCH_ASSOC 作為提取類型。
row
指定在使用可捲動游標的結果集中要存取的資料列。可能的值為 SQLSRV_SCROLL_NEXT
(下一列)、SQLSRV_SCROLL_PRIOR
(上一列)、SQLSRV_SCROLL_FIRST
(第一列)、SQLSRV_SCROLL_LAST
(最後一列)、SQLSRV_SCROLL_ABSOLUTE
(絕對位置)和 SQLSRV_SCROLL_RELATIVE
(相對位置,預設值)。指定此參數時,必須明確定義 fetchType
參數。
offset
如果 row 參數設定為 SQLSRV_SCROLL_ABSOLUTE
或 SQLSRV_SCROLL_RELATIVE
,則指定要存取的資料列。請注意,結果集中的第一列索引為 0。
範例 #1 擷取關聯式陣列。
<?php
$serverName = "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
// 迴圈讀取每一筆資料
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $row['LastName'].", ".$row['FirstName']."<br />";
}
sqlsrv_free_stmt( $stmt);
?>
範例 #2 擷取數字陣列。
<?php
$serverName = "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
echo $row[0].", ".$row[1]."<br />";
}
sqlsrv_free_stmt( $stmt);
?>
在以上範例中,未指定 fetchType
或明確使用 SQLSRV_FETCH_TYPE
常數,將會返回同時具有關聯式和數字鍵的陣列。
如果返回多個同名欄位,則最後一個欄位將會優先。為了避免欄位名稱衝突,請使用別名。
如果返回沒有名稱的欄位,則陣列元素的關聯式鍵將會是一個空字串 ("")。
使用迭代的範例 ( SQLSRV_SCROLL_ABSOLUTE )。
for ($i=0; $i < sqlsrv_num_rows($stmt); $i++) {
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC, SQLSRV_SCROLL_ABSOLUTE , $i );
echo "第一欄的值: '.trim($row[0]).', 第二欄的值: '.trim($row[1]);
}