共用方式為


sqlsrv_fetch_array

array 的形式擷取下一個資料列。

語法

sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])

參數

$stmt:對應到執行之陳述式的陳述式資源。

$fetchType [選擇性]:預先定義的常數。這個參數可以接受下表列出的其中一個值:

描述

SQLSRV_FETCH_NUMERIC

當做數值陣列傳回的下一個資料列。

SQLSRV_FETCH_ASSOC

當做關聯陣列傳回的下一個資料列。陣列索引鍵是結果集內的資料行名稱。

SQLSRV_FETCH_BOTH

當做數值陣列和關聯陣列傳回的下一個資料列。這是預設值。

row [選擇性]:在 1.1 版中新增。下列其中一個值,指定要在使用可捲動資料指標的結果集中存取的資料列 (如果指定了 row,就必須明確指定 fetchtype,即使您指定了預設值也一樣)。

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

如需有關這些值的詳細資訊,請參閱<指定資料指標類型和選取資料列>。SQL Server Driver for PHP 1.1 版新增了可捲動資料指標的支援。

offset [選擇性]:搭配 SQLSRV_SCROLL_ABSOLUTE 和 SQLSRV_SCROLL_RELATIVE 使用,以便指定要擷取的資料列。結果集中的第一個記錄是 0。

傳回值

如果擷取資料列,就會傳回 array。如果沒有其他資料列要擷取,就會傳回 null。如果發生錯誤,就會傳回 false

根據 $fetchType 參數的值,傳回的 array 可以是數值索引 array、關聯 array 或這兩者。預設會傳回具有數值和關聯索引鍵的 array。傳回之陣列中的值資料類型將會是預設 PHP 資料類型。如需有關預設 PHP 資料類型的資訊,請參閱<預設 PHP 資料類型>。

備註

如果傳回沒有名稱的資料行,陣列元素的關聯索引鍵將會是空字串 ("")。例如,假設這個 Transact-SQL 陳述式會將值插入資料庫資料表,並擷取伺服器產生的主索引鍵:

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);

SELECT SCOPE_IDENTITY()

如果此陳述式的 SELECT SCOPE_IDENTITY() 部分所傳回的結果集會當做關聯陣列來擷取,傳回之值的索引鍵將會是空字串 (""),因為傳回的資料行沒有名稱。為了避免這個狀況,您可以利用數值陣列的方式擷取結果,或是針對 Transact-SQL 陳述式內傳回的資料行指定名稱。下列是在 Transact-SQL 內指定資料行名稱的一個方法:

SELECT SCOPE_IDENTITY() AS PictureID

如果結果集包含多個沒有名稱的資料行,最後一個未命名之資料行的值將會指派給空字串 ("") 索引鍵。

範例

下列範例會以關聯 array 的形式擷取結果集的每一個資料列。下列範例假設 SQL Server 和 AdventureWorks 資料庫已經安裝在本機電腦上。當從命令列執行此範例時,所有輸出都會寫入主控台。

<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Set up and execute the query. */
$tsql = "SELECT FirstName, LastName
         FROM Person.Contact
         WHERE LastName='Alan'";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false)
{
     echo "Error in query preparation/execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve each row as an associative array and display the results.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
      echo $row['LastName'].", ".$row['FirstName']."\n";
}

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

另請參閱

概念

比較資料擷取函數
有關文件集中的程式碼範例

其他資源

API 參考 (SQL Server Driver for PHP)
擷取資料