Procédure : récupérer des données de type caractère sous forme de flux
Le Pilote SQL Server pour PHP tire parti des flux de données PHP pour récupérer de grandes quantités de données du serveur. L'exemple de cette rubrique montre comment récupérer des données de type caractère sous forme de flux.
Exemple
Dans l'exemple suivant, une ligne est récupérée dans la table Production.ProductReview de la base de données AdventureWorks. Le champ Comments de la ligne retournée est récupéré sous forme de flux et affiché via la fonction PHP fpassthru.
La récupération des données image sous forme de flux est effectuée via l'utilisation de sqlsrv_fetch et sqlsrv_get_field avec le type de retour spécifié sous forme de flux de type caractère. Le type de retour est spécifié en utilisant la constante SQLSRV_PHPTYPE_STREAM. Pour plus d'informations sur les constantes sqlsrv, consultez Constantes SQLSRV.
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,
CONVERT(varchar(32), ReviewDate, 107) AS [ReviewDate],
Rating,
Comments
FROM Production.ProductReview
WHERE ProductReviewID = ? ";
/* Set the parameter value. */
$productReviewID = 1;
$params = array( $productReviewID);
/* 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 three fields are retrieved
as strings and the fourth as a stream with character encoding. */
if(sqlsrv_fetch( $stmt ) === false )
{
echo "Error in retrieving row.\n";
die( print_r( sqlsrv_errors(), true));
}
echo "Name: ".sqlsrv_get_field( $stmt, 0 )."\n";
echo "Date: ".sqlsrv_get_field( $stmt, 1 )."\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);
/* Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Dans la mesure où aucun type de retour PHP n'est spécifié pour les trois premiers champs, chaque champ est retourné en fonction de son type 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. Pour plus d'informations sur la façon de spécifier les types de retour PHP, consultez Procédure : spécifier les types de données PHP.
Voir aussi
Concepts
À propos des exemples de code dans la documentation
Autres ressources
Récupération des données
Récupération des données sous forme de flux