(无版本信息可用,可能仅在 Git 中)
sqlsrv_fetch_object — 将结果集中的下一行数据检索为对象
$stmt
,$className
= ?,$ctorParams
= ?,$row
= ?,$offset
= ?将结果集中的下一行数据检索为指定类的实例,该实例的属性与行字段名匹配,值与行字段值对应。
stmt
由 sqlsrv_query() 或 sqlsrv_execute() 创建的语句资源。
className
要实例化的类的名称。如果没有指定类名,将实例化 stdClass。
ctorParams
传递给指定类构造函数的值。如果指定类的构造函数接受参数,则必须提供 ctorParams 数组。
row
要访问的行。此参数只能在指定语句使用可滚动游标准备的情况下使用。在这种情况下,此参数可以取以下值之一
offset
如果 row 参数设置为 SQLSRV_SCROLL_ABSOLUTE
或 SQLSRV_SCROLL_RELATIVE
,则指定要访问的行。请注意,结果集中的第一行索引为 0。
示例 #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
并向错误集合添加错误。在使用具有相同名称的多个列的结果集时,最好使用 sqlsrv_fetch_array() 或 sqlsrv_fetch() 和 sqlsrv_get_field() 的组合。