检索下一行数据作为 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 时也是如此)。
有关这些值的详细信息,请参阅指定游标类型和选择行。在 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); ?>
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有