PHP Conference Japan 2024

sqlsrv_fetch_object

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

sqlsrv_fetch_object将结果集中的下一行数据作为对象检索

描述

sqlsrv_fetch_object(
    资源 $stmt,
    字符串 $className = ?,
    数组 $ctorParams = ?,
    整数 $row = ?,
    整数 $offset = ?
): 混合

将结果集中的下一行数据作为指定类的实例检索,该实例的属性与行字段名称匹配,并且值与行字段值对应。

参数

stmt

sqlsrv_query()sqlsrv_execute() 创建的语句资源。

className

要实例化的类的名称。如果未指定类名,则实例化 stdClass。

ctorParams

传递给指定类构造函数的值。如果指定类的构造函数需要参数,则必须提供 ctorParams 数组。

row

要访问的行。此参数仅在指定语句使用可滚动游标准备时才能使用。在这种情况下,此参数可以采用以下值之一

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

offset

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

返回值

成功时返回一个对象,如果不再有行要返回,则返回 null,如果发生错误或指定的类不存在,则返回 false

示例

示例 #1 sqlsrv_fetch_object() 示例

以下示例演示如何将一行作为 stdClass 对象检索。

<?php
$serverName
= "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if(
$conn === false ) {
die(
print_r( sqlsrv_errors(), true));
}

$sql = "SELECT fName, lName FROM Table_1";
$stmt = sqlsrv_query( $conn, $sql);
if(
$stmt === false ) {
die(
print_r( sqlsrv_errors(), true));
}

// 将每一行作为对象检索。
// 由于没有指定类,因此每一行都将作为 stdClass 对象检索。
// 属性名称对应于字段名称。
while( $obj = sqlsrv_fetch_object( $stmt)) {
echo
$obj->fName.", ".$obj->lName."<br />";
}
?>

注释

如果使用可选的 $className 参数指定了类名,并且该类具有名称与结果集字段名称匹配的属性,则相应的结果集值将应用于这些属性。如果结果集字段名称与类属性不匹配,则向对象添加一个具有结果集字段名称的属性,并将结果集值应用于该属性。使用 $className 参数时,适用以下规则

  • 字段-属性名称匹配区分大小写。
  • 无论访问修饰符如何,都会发生字段-属性匹配。
  • 将字段值应用于属性时,会忽略类属性数据类型。
  • 如果类不存在,则该函数返回 false 并向错误集合添加错误。
无论是否提供 $className 参数,如果返回一个没有名称的字段,则该字段值将被忽略,并且警告将被添加到错误集合中。

当使用具有多个同名字段的结果集时,最好使用 sqlsrv_fetch_array()sqlsrv_fetch()sqlsrv_get_field() 的组合。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top