使用迭代的示例 ( 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 "第 1 列的值: '.trim($row[0]).', 第 2 列的值: '.trim($row[1]);
}
(没有版本信息可用,可能只在 Git 中)
sqlsrv_fetch_array — 将一行作为数组返回
将下一行可用的数据作为关联数组、数字数组或两者(默认值)返回。
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
如果行参数设置为 SQLSRV_SCROLL_ABSOLUTE
或 SQLSRV_SCROLL_RELATIVE
,则指定要访问的行。请注意,结果集中的第一行索引为 0。
示例 #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
常量将返回一个包含关联键和数字键的数组。
如果返回了多个同名列,则最后一个列将优先。为了避免字段名称冲突,请使用别名。
如果返回了一个没有名称的列,则数组元素的关联键将是一个空字符串 ("")。
使用迭代的示例 ( 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 "第 1 列的值: '.trim($row[0]).', 第 2 列的值: '.trim($row[1]);
}
当我尝试对“select ... from [viewName]”语句使用 SQLSRV_FETCH_BOTH 时,结果集包含多余的字段(重复字段和来自联接表的其他字段)。其他类型的 fetchType 则可以正常工作。