隐藏

sqlsrv_fetch_object

发布:2014/7/9 8:44:30作者:管理员 来源:本站 浏览次数:1463

检索下一行数据作为 PHP 对象。

sqlsrv_fetch_object( resource $stmt [, string $className [, array $ctorParams[, row[, ]offset]]])

$stmt:与执行的语句对应的语句资源。

$className [可选]:一个字符串,指定要实例化的类的名称。如果未指定 $className 参数的值,则对 PHP stdClass 的实例进行实例化。

$ctorParams [可选]:一个数组,包含传递到使用 $className 参数所指定类的构造函数的值。如果所指定类的构造函数接受参数值,则调用 sqlsrv_fetch_object 时必须使用 $ctorParams 参数。

row [可选]:在 1.1 版中添加。以下值之一,指定要在使用可滚动游标的结果集中访问的行。(如果指定 row,则 $className 和 $ctorParams 必须显式指定,即使您必须为 $className 和 $ctorParams 指定 null 时也是如此)。

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

有关这些值的详细信息,请参阅指定游标类型和选择行。在 SQL Server Driver for PHP 的 1.1 版中添加了可滚动游标支持。

offset [可选]:与 SQLSRV_SCROLL_ABSOLUTE 和 SQLSRV_SCROLL_RELATIVE 一起使用,用于指定要检索的行。结果集中的第一个记录是 0。

具有与结果集字段名称对应的属性的 PHP 对象。属性值以对应的结果集字段值进行填充。如果使用可选 $className 参数指定的类不存在,或者如果不存在与指定语句关联的活动结果集,则返回 false。如果不再有需要检索的行,将返回 null

所返回对象中的值的数据类型将为默认的 PHP 数据类型。有关默认的 PHP 数据类型的信息,请参阅默认的 PHP 数据类型

如果通过可选 $className 参数指定了一个类名,便会实例化一个此类类型的对象。如果类的属性名称与结果集字段名称匹配,则对应的结果集值将应用于这些属性。如果结果集字段名称与类属性不匹配,则会向该对象添加带有结果集字段名称的属性,并且相应的结果集值将应用到该属性。有关通过 $className 参数调用 sqlsrv_fetch_object 的详细信息,请参阅如何以对象形式检索数据

如果返回没有名称的字段,sqlsrv_fetch_object 将放弃该字段值并发出警告。例如,请查看下面的 Transact-SQL 语句,该语句将一个值插入数据库表中并检索服务器生成的主键:

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);

SELECT SCOPE_IDENTITY()

如果使用 sqlsrv_fetch_object 检索此查询返回的结果,则将丢弃 SELECT SCOPE_IDENTITY() 返回的值并发出警告。为避免出现此情况,您可以在 Transact-SQL 语句中为返回的字段指定一个名称。以下是一种在 Transact-SQL 中指定列名的方法:

SELECT SCOPE_IDENTITY() AS PictureID

以下示例检索结果集的每一行作为 PHP 对象。此示例假定本地计算机上已安装了 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 a PHP object and display the results.*/
while( $obj = sqlsrv_fetch_object( $stmt))
{
      echo $obj->LastName.", ".$obj->FirstName."\n";
}

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>