Partager via


Procédure : spécifier les types de données PHP

Les étapes suivantes résument le processus d'utilisation du Pilote SQL Server pour PHP afin de spécifier les types de données PHP lors de la récupération de données du serveur :

  1. Définissez et exécutez une requête Transact-SQL avec sqlsrv_query ou la combinaison sqlsrv_prepare/sqlsrv_execute.
  2. Rendez une ligne de données disponible pour la lecture en utilisant sqlsrv_fetch.
  3. Récupérez les données de champ d'une ligne retournée en utilisant sqlsrv_get_field et en spécifiant le type de données PHP souhaité en tant que troisième paramètre optionnel. Si ce paramètre n'est pas spécifié, les données sont retournées avec les types PHP par défaut. Pour plus d'informations sur les types de retour PHP par défaut, consultez Types de données PHP par défaut.
    Pour plus d'informations sur les constantes utilisées pour spécifier le type de données PHP, consultez la section PHPTYPE des Constantes SQLSRV.

Exemple

Dans l'exemple suivant, plusieurs lignes sont récupérées dans la table Production.ProductReview de la base de données AdventureWorks. Dans chaque ligne retournée, les champs ReviewDate et Comments sont récupérés sous forme de chaîne et de flux, respectivement. Les données de flux sont affichées avec la fonction PHP fpassthru.

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 the Transact-SQL query. */
$tsql = "SELECT ReviewerName, 
                ReviewDate,
                Rating, 
                Comments 
         FROM Production.ProductReview 
         WHERE ProductID = ? 
         ORDER BY ReviewDate DESC";

/* Set the parameter value. */
$productID = 709;
$params = array( $productID);

/* Execute the query. */
$stmt = sqlsrv_query($conn, $tsql, $params);
if( $stmt === false )
{
     echo "Error in statement execution.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the data. The first and third fields are
retrieved according to their default types, strings. The second field
is retrieved as a string with 8-bit character encoding. The fourth
field is retrieved as a stream with 8-bit character encoding.*/
while ( sqlsrv_fetch( $stmt))
{
   echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
   echo "Date: ".sqlsrv_get_field( $stmt, 1, 
                       SQLSRV_PHPTYPE_STRING( SQLSRV_ENC_CHAR))."\n";
   echo "Rating: ".sqlsrv_get_field( $stmt, 2 )."\n";
   echo "Comments: ";
   $comments = sqlsrv_get_field( $stmt, 3, 
                            SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR));
   fpassthru( $comments);
   echo "\n"; 
}

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Dans l'exemple, la récupération du deuxième champ (ReviewDate) sous la forme de chaîne permet de conserver la précision en milliseconde du type de données SQL Server DATETIME. Par défaut, le type de données SQL Server DATETIME est récupéré sous forme d'objet PHP DateTime qui n'affiche pas les millisecondes.

La récupération du quatrième champ (Comments) sous forme de flux est présentée uniquement à des fins de démonstration. Par défaut, le type de données SQL Server nvarchar(3850) est récupéré sous forme de chaîne, ce qui convient pour la plupart des cas.

Cc296208.note(fr-fr,SQL.90).gifRemarque :
La fonction sqlsrv_field_metadata permet d'obtenir des informations de champ, notamment des informations sur le type, avant d'exécuter une requête.

Voir aussi

Tâches

Procédure : récupérer des paramètres de sortie
Procédure : récupérer des paramètres d'entrée/de sortie

Concepts

À propos des exemples de code dans la documentation

Autres ressources

Récupération des données