Compartir a través de


sqlsrv_fetch_object

Recupera la fila siguiente de datos como un objeto de PHP.

Sintaxis

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

Parámetros

$stmt: un recurso de instrucción correspondiente a una instrucción ejecutada.

$className [OPCIONAL]: una consulta que especifica el nombre de la clase de la que se va a crear una instancia. Si no se especifica un valor para el parámetro $className, se crea una instancia de la instancia stdClass de PHP.

$ctorParams [OPCIONAL]: una matriz que contiene los valores que se pasan al constructor de la clase especificada con el parámetro $className. Si el constructor de la clase especificada acepta los valores de parámetro, el parámetro $ctorParams se debe usar cuando se llama a sqlsrv_fetch_object.

row [OPCIONAL]: se ha agregado en la versión 1.1. Uno de los valores siguientes, que especifica a qué fila se debe tener acceso en un conjunto de resultados que usa un cursor desplazable. (Si se especifica row, $className y $ctorParams se deben especificar de forma explícita, aunque se especifique un valor nulo para $className y $ctorParams.)

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

Para obtener más información acerca de estos valores, vea Especificar un tipo de cursor y seleccionar filas. La compatibilidad con cursores desplazables se ha agregado en la versión 1.1 del Controlador de SQL Server para PHP.

offset [OPCIONAL]: se usa con SQLSRV_SCROLL_ABSOLUTE y SQLSRV_SCROLL_RELATIVE para especificar la fila que se debe recuperar. El primer registro del conjunto de resultados es 0.

Valor devuelto

Un objeto de PHP con propiedades que corresponden a los nombres de campo del conjunto de resultados. Los valores de las propiedades se rellenan con los valores de campo del conjunto de resultados correspondientes. Si la clase especificada con el parámetro opcional $className no existe o si no hay ningún conjunto de resultados activos asociado a la instrucción especificada, se devuelve false. Si no hay más filas para recuperar, se devuelve null.

El tipo de datos de un valor del objeto devuelto será el tipo de datos predeterminado de PHP. Para obtener información de los tipos de datos predeterminados de PHP, vea Tipos de datos predeterminados de PHP.

Notas

Si se especifica un nombre de clase con el parámetro opcional $className, se crea una instancia de un objeto de este tipo de clase. Si la clase tiene propiedades con nombres que coinciden con los nombres de campo del conjunto de resultados, los correspondientes valores del conjunto de resultados se aplican a las propiedades. Si un nombre de campo del conjunto de resultados no coincide con una propiedad de clase, se agrega una propiedad con el nombre de campo del conjunto de resultados al objeto y el valor del conjunto de resultados se aplica a la propiedad. Para obtener más información acerca de cómo llamar a sqlsrv_fetch_object con el parámetro $className, vea Cómo recuperar datos como un objeto.

Si se devuelve un campo sin nombre, sqlsrv_fetch_object descartará el valor del campo y emitirá una advertencia. Por ejemplo, considere que esta instrucción de Transact-SQL inserta un valor en una tabla de la base de datos y recupera la clave principal generada por el servidor:

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

SELECT SCOPE_IDENTITY()

Si los resultados devueltos por esta consulta se recuperan con sqlsrv_fetch_object, se descartará el valor que devuelve SELECT SCOPE_IDENTITY() y se emitirá una advertencia. Para evitar esto, puede especificar un nombre para el campo devuelto en la instrucción de Transact-SQL. A continuación, se muestra una forma de especificar un nombre de columna en Transact-SQL:

SELECT SCOPE_IDENTITY() AS PictureID

Ejemplo

En el siguiente ejemplo se recupera cada fila de un conjunto de resultados como un objeto de PHP. En el ejemplo se supone que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Cuando se ejecuta el ejemplo desde la línea de comandos, todos los resultados se escriben en la consola.

<?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);
?>

Vea también

Conceptos

Comparar las funciones de recuperación de datos
Acerca de ejemplos de código en la documentación

Otros recursos

Recuperar datos
Referencia de la API (Controlador SQL Server para PHP)