以 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 必须显式指定,即使您指定了默认值时也是如此。)
有关这些值的详细信息,请参阅指定游标类型和选择行。在 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); ?>
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有