sqlsrv_fetch_array

下载 PHP 驱动程序

以数字索引的阵列、关联阵列或这两者的形式检索下一行数据。

语法

  
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

有关这些值的详细信息,请参阅 指定游标类型和选择行。 已在 Microsoft Drivers for PHP for SQL Server的版本 1.1 中添加了对可滚动游标的支持。

offset [可选]:结合使用 SQLSRV_SCROLL_ABSOLUTE 和 SQLSRV_SCROLL_RELATIVE 以指定要检索的行。 结果集中的第一个记录为 0。

返回值

如果检索数据行,将返回 array 。 如果没有更多要检索的行,将返回 NULL 。 如果出现错误,将返回 False

根据 $fetchType 参数的值,返回的 阵列 可以是数字索引的 阵列、关联 阵列或这两者。 默认情况下,将返回带有数值键和关联键的 array 。 返回阵列中值的数据类型将是默认 PHP 数据类型。 有关默认 PHP 数据类型的信息,请参阅 Default PHP Data Types

备注

如果返回没有名称的列,阵列元素的关联键将为空字符串 ("")。 例如,考虑可将某个值插入数据库表并检索服务器生成的主键的 Transact-SQL 语句:

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

如果此语句的 SELECT SCOPE_IDENTITY() 部分返回的结果集以关联阵列的形式进行检索,则返回值的键将是空字符串 (""),因为返回的列没有名称。 若要避免出现上述情形,可以以数值阵列的形式检索该结果,或在 Transact-SQL 语句中为返回的列指定一个名称。 以下语句是在 Transact-SQL 中指定一个列名的一种方法:

SELECT SCOPE_IDENTITY() AS PictureID

如果结果集包含多个不带名称的列,则最后一个未命名列的值将分配到空字符串 ("") 键。

关联阵列示例

以下示例将每一行结果集检索为一个关联 阵列。 该示例假定已在本地计算机上安装了 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);  
?>  

索引阵列示例

以下示例将每一行结果集检索为一个数字索引的阵列。

该示例将从产品(具有指定日期且库存量 (StockQty) 小于指定值)的 AdventureWorks 数据库的 Purchasing.PurchaseOrderDetail 表中检索产品信息 。

该示例假定已在本地计算机上安装了 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));  
}  
  
/* Define the query. */  
$tsql = "SELECT ProductID,  
                UnitPrice,  
                StockedQty   
         FROM Purchasing.PurchaseOrderDetail  
         WHERE StockedQty < 3   
         AND DueDate='2002-01-29'";  
  
/* Execute the query. */  
$stmt = sqlsrv_query( $conn, $tsql);  
if ( $stmt )  
{  
     echo "Statement executed.\n";  
}   
else   
{  
     echo "Error in statement execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Iterate through the result set printing a row of data upon each  
iteration.*/  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))  
{  
     echo "ProdID: ".$row[0]."\n";  
     echo "UnitPrice: ".$row[1]."\n";  
     echo "StockedQty: ".$row[2]."\n";  
     echo "-----------------\n";  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

sqlsrv_fetch_array 函数将始终根据默认 PHP 数据类型返回数据。 有关如何指定 PHP 数据类型的信息,请参阅如何:指定 PHP 数据类型

如果检索没有名称的字段,阵列元素的关联键将为空字符串 ("")。 有关详细信息,请参阅 sqlsrv_fetch_array

另请参阅

SQLSRV 驱动程序 API 参考

检索数据

文档中相关的代码示例

Microsoft Drivers for PHP for SQL Server 编程指南