隐藏

sqlsrv_fetch_array

发布:2014/7/9 8:43:30作者:管理员 来源:本站 浏览次数:1776

以 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);
?>