Procédure : Récupérer des données caractères sous la forme d’un flux à l’aide du pilote SQLSRV
La récupération de données sous forme de flux est disponible uniquement dans le pilote SQLSRV du Pilotes Microsoft SQL Server pour PHP, et non dans le pilote PDO_SQLSRV.
Le pilote SQLSRV tire parti des flux PHP pour récupérer de grandes quantités de données à partir du serveur. L’exemple de cette rubrique montre comment récupérer des données caractères sous la forme d’un flux.
Exemple
L’exemple suivant récupère une ligne de la table Production.ProductReview de la base de données AdventureWorks. Le champ Comments de la ligne retournée est récupéré sous la forme d’un flux et affiché à l’aide de la fonction fpassthru PHP.
La récupération de données sous la forme d’un flux s’effectue à l’aide de sqlsrv_fetch et sqlsrv_get_field avec le type de retour spécifié en tant que flux de caractères. Le type de retour est spécifié à l’aide de la constante SQLSRV_PHPTYPE_STREAM. Pour plus d’informations sur les constantes sqlsrv, consultez Constantes (Microsoft Drivers for PHP for SQL Server).
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 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);
?>
Étant donné qu’aucun type de retour PHP n’est spécifié pour les trois premiers champs, chaque champ est retourné selon son type PHP par défaut. Pour plus d’informations sur les types de données PHP par défaut, consultez Default PHP Data Types. Pour plus d’informations sur la spécification des types de retour PHP, consultez How to: Specify PHP Data Types.
Voir aussi
Récupération des données sous la forme d’un flux à l’aide du pilote SQLSRV