sqlsrv_get_field
Récupère les données du champ spécifié de la ligne actuelle. Vous devez accéder aux données de champ dans l’ordre. Par exemple, les données du premier champ ne sont pas accessibles une fois que vous avez accédé aux données du deuxième champ.
Syntaxe
sqlsrv_get_field( resource $stmt, int $fieldIndex [, int $getAsType])
Paramètres
$stmt : ressource d’instruction correspondant à une instruction exécutée.
$fieldIndex: index du champ à récupérer. Les index commencent à zéro.
$getAsType [FACULTATIF] : constante SQLSRV (SQLSRV_PHPTYPE_*)qui détermine le type de données PHP des données retournées. Pour plus d’informations sur les types de données pris en charge, consultez Constantes (Pilotes Microsoft SQL Server pour PHP). Si aucun type de retour n’est spécifié, un type PHP par défaut est retourné. Pour plus d’informations sur les types PHP par défaut, consultez Default PHP Data Types. Pour plus d’informations sur la spécification des types de données PHP, consultez How to: Specify PHP Data Types.
Valeur de retour
Données du champ. Vous pouvez spécifier le type de données PHP des données retournées à l’aide du paramètre $getAsType . Si aucun type de données de retour n’est spécifié, le type de données PHP par défaut est retourné. Pour plus d’informations sur les types PHP par défaut, consultez Default PHP Data Types. Pour plus d’informations sur la spécification des types de données PHP, consultez How to: Specify PHP Data Types.
Notes
La combinaison de sqlsrv_fetch et de sqlsrv_get_field fournit un accès avant uniquement aux données.
La combinaison sqlsrv_fetch/sqlsrv_get_field charge un seul champ d’une ligne de jeu de résultats dans la mémoire de script et permet la spécification du type de retour PHP. (Pour plus d’informations sur la façon de spécifier le type de retour PHP, consultez Procédure : spécifier des types de données PHP.) Cette combinaison de fonctions permet également aux données d’être récupérées sous la forme d’un flux. (Pour plus d’informations sur la récupération de données sous la forme d’un flux, consultez Récupération des données sous la forme d’un flux à l’aide du pilote SQLSRV.)
Exemple
L’exemple suivant récupère une ligne de données contenant une évaluation de produit et le nom de son auteur. Pour récupérer les données du jeu de résultats, on utilise sqlsrv_get_field. L’exemple part du principe que SQL Server et la base de données AdventureWorks sont installés sur l’ordinateur local. Toute la sortie est écrite dans la console quand 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. Note that both ReviewerName and
Comments are of the SQL Server nvarchar type. */
$tsql = "SELECT ReviewerName, Comments
FROM Production.ProductReview
WHERE ProductReviewID=1";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Error in statement preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Make the first row of the result set available for reading. */
if( sqlsrv_fetch( $stmt ) === false )
{
echo "Error in retrieving row.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Note: Fields must be accessed in order.
Get the first field of the row. Note that no return type is
specified. Data will be returned as a string, the default for
a field of type nvarchar.*/
$name = sqlsrv_get_field( $stmt, 0);
echo "$name: ";
/*Get the second field of the row as a stream.
Because the default return type for a nvarchar field is a
string, the return type must be specified as a stream. */
$stream = sqlsrv_get_field( $stmt, 1,
SQLSRV_PHPTYPE_STREAM( SQLSRV_ENC_CHAR));
while( !feof( $stream))
{
$str = fread( $stream, 10000);
echo $str;
}
/* Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>