2024 日本 PHP 研討會

sqlsrv_fetch_array

(沒有版本資訊,可能只存在於 Git 中)

sqlsrv_fetch_array將列以陣列形式返回

說明

sqlsrv_fetch_array(
    資源 $stmt,
    整數 $fetchType = ?,
    整數 $row = ?,
    整數 $offset = ?
): 陣列

以關聯式陣列、數字索引陣列或兩者 (預設值) 的形式傳回下一筆可用的資料列。

參數

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_ABSOLUTESQLSRV_SCROLL_RELATIVE,則指定要存取的資料列。請注意,結果集中的第一列索引為 0。

傳回值

成功時傳回陣列,如果沒有更多資料列要傳回,則傳回 null,如果發生錯誤,則傳回 false

範例

範例 #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 常數,將會返回同時具有關聯式和數字鍵的陣列。

如果返回多個同名欄位,則最後一個欄位將會優先。為了避免欄位名稱衝突,請使用別名。

如果返回沒有名稱的欄位,則陣列元素的關聯式鍵將會是一個空字串 ("")。

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

albornozg dot rene at gmail dot com
6 年前
使用迭代的範例 ( 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]);

}
To Top