Share via


sqlsrv_fetch_object

Récupère la ligne suivante de données sous forme d'objet PHP.

Syntaxe

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

Paramètres

$stmt : ressource d'instruction correspondant à une instruction exécutée.

$className [OPTIONNEL] : chaîne spécifiant le nom de la classe à instancier. Si aucune valeur n'est spécifiée pour le paramètre $className, une instance du stdClass PHP est instanciée.

$ctorParams [OPTIONNEL] : tableau qui contient les valeurs passées au constructeur de la classe spécifiée à l'aide du paramètre $className. Si le constructeur de la classe spécifiée accepte les valeurs de paramètre, le paramètre $ctorParams doit être utilisé lors de l'appel à sqlsrv_fetch_object.

row [OPTIONNEL] : nouveauté de la version 1.1. Une des valeurs ci-dessous, indiquant la ligne à laquelle accéder dans un jeu de résultats utilisant un curseur à défilement variable. (Si row est spécifié, $className et $ctorParams doivent être explicitement spécifiés, même si vous devez indiquer la valeur null pour $className et $ctorParams.)

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

Pour plus d'informations sur ces valeurs, consultez Spécification d'un type de curseur et sélection de lignes. La prise en charge du curseur à défilement variable est une nouveauté de la version 1.1 du Pilote SQL Server pour PHP.

offset [OPTIONNEL] : utilisé avec SQLSRV_SCROLL_ABSOLUTE et SQLSRV_SCROLL_RELATIVE pour spécifier la ligne à récupérer. Le premier enregistrement du jeu de résultats est 0.

Valeur de retour

Objet PHP avec des propriétés qui correspondent aux noms de champs du jeu de résultats. Les valeurs de propriétés sont remplies à partir des valeurs de champs correspondantes du jeu de résultats. Si la classe spécifiée avec le paramètre optionnel $className n'existe pas ou s'il n'y a pas de jeu de résultats actif associé à l'instruction spécifiée, false est retourné. S'il n'y a plus de lignes à récupérer, la valeur null est retournée.

Le type de données d'une valeur dans l'objet retourné représente le type de données PHP par défaut. Pour plus d'informations sur les types de données PHP par défaut, consultez Types de données PHP par défaut.

Notes

Si un nom de classe est spécifié avec le paramètre optionnel $className, un objet de ce type de classe est instancié. Si la classe a des propriétés dont les noms sont identiques aux noms de champs du jeu de résultats, les valeurs correspondantes du jeu de résultats sont appliquées aux propriétés. Si un nom de champ du jeu de résultats est différent de celui d'une propriété de classe, une propriété nommée comme le champ du jeu de résultats est ajoutée à l'objet et la valeur du jeu de résultats est appliquée à la propriété. Pour plus d'informations sur l'appel de sqlsrv_fetch_object avec le paramètre $className, consultez Procédure : récupérer des données sous forme d'objet.

Si un champ sans nom est retourné, sqlsrv_fetch_object ignore la valeur du champ et émet un avertissement. Par exemple, l'instruction Transact-SQL suivante insère une valeur dans la table de base de données et récupère la clé primaire générée par le serveur :

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

SELECT SCOPE_IDENTITY()

Si les résultats retournés par cette requête sont récupérés avec sqlsrv_fetch_object, la valeur retournée par SELECT SCOPE_IDENTITY() est ignorée et un avertissement est émis. Pour éviter cela, vous pouvez spécifier un nom pour le champ retourné directement dans l'instruction Transact-SQL. L'exemple suivant montre une méthode pour spécifier un nom de colonne dans une instruction Transact-SQL :

SELECT SCOPE_IDENTITY() AS PictureID

Exemple

L'exemple suivant montre comment récupérer chaque ligne d'un jeu de résultats sous la forme d'un objet PHP. L'exemple suppose que SQL Server et la base de données AdventureWorks sont installés sur l'ordinateur local. Toutes les données de sortie sont écrites dans la console lorsque l'exemple est exécuté à partir de la ligne de commande.

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

Voir aussi

Concepts

Comparaison des fonctions de récupération des données
À propos des exemples de code dans la documentation

Autres ressources

Récupération des données
Référence de l'API (Pilote SQL Server pour PHP)