2024年PHP开发者大会日本站

sqlsrv_fetch_array

(无版本信息可用,可能仅存在于Git仓库中)

sqlsrv_fetch_array返回一行作为数组

描述

sqlsrv_fetch_array(
    资源 $stmt,
    整数 $fetchType = ?,
    整数 $row = ?,
    整数 $offset = ?
): 数组

将下一行可用数据作为关联数组、数字数组或两者(默认)返回。

参数

stmt

由 sqlsrv_query 或 sqlsrv_prepare 返回的语句资源。

fetchType

一个预定义常量,指定要返回的数组类型。可能的值为 SQLSRV_FETCH_ASSOCSQLSRV_FETCH_NUMERICSQLSRV_FETCH_BOTH(默认)。

当使用多个同名列的结果集时,不应使用 SQLSRV_FETCH_ASSOC 获取类型。

row

指定要访问使用可滚动游标的结果集中的行。可能的值为 SQLSRV_SCROLL_NEXTSQLSRV_SCROLL_PRIORSQLSRV_SCROLL_FIRSTSQLSRV_SCROLL_LASTSQLSRV_SCROLL_ABSOLUTESQLSRV_SCROLL_RELATIVE(默认)。指定此参数时,必须显式定义 fetchType

offset

如果 row 参数设置为 SQLSRV_SCROLL_ABSOLUTESQLSRV_SCROLL_RELATIVE,则指定要访问的行。请注意,结果集中的第一行索引为 0。

返回值

成功时返回数组,如果没有更多行要返回则返回 null,如果发生错误则返回 false

示例

示例 #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
= "服务器名称\实例名称";
$connectionInfo = array( "Database"=>"数据库名", "UID"=>"用户名", "PWD"=>"密码");
$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常量,则返回的数组将同时包含关联键和数字键。

如果返回多个同名的列,则最后一个列将优先。为避免字段名称冲突,请使用别名。

如果返回一个没有名称的列,则数组元素的关联键将为空字符串("")。

另请参阅

添加注释

用户贡献的注释 1 条注释

[email protected]
6 年前
带有迭代的示例 (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]);

}
To Top