首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sqlsrv_fetch_object

(没有可用的版本信息,可能只在Git中)

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

描述

代码语言:javascript
复制
mixed sqlsrv_fetch_object ( resource $stmt [, string $className [, array $ctorParams [, int $row [, int $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

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

返回值

如果没有更多行要返回NULL,并且FALSE发生错误或者指定的类不存在,则返回成功的对象。

例子

示例#1 sqlsrv_fetch_object()示例

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

代码语言:javascript
复制
<?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));
}

// Retrieve each row as an object.
// Because no class is specified, each row will be retrieved as a stdClass object.
// Property names correspond to field names.
while( $obj = sqlsrv_fetch_object( $stmt)) {
      echo $obj->fName.", ".$obj->lName."<br />";
}
?>

笔记

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

  • 字段属性名称匹配区分大小写。
  • 无论访问修饰符如何,都会进行字段属性匹配。
  • 将属性值应用于字段值时,类属性数据类型将被忽略。
  • 如果该类不存在,则该函数返回FALSE并向错误集合添加错误。

无论是否提供了$ className参数,如果返回没有名称的字段,字段值将被忽略,并且警告将被添加到错误集合中。

当使用具有多个具有相同名称的列的结果集时,最好使用sqlsrv_fetch_array()或sqlsrv_fetch()和sqlsrv_get_field()的组合。

扫码关注腾讯云开发者

领取腾讯云代金券