Procedimientos: Recuperación de datos de caracteres como secuencia mediante el controlador SQLSRV
La recuperación de datos como un flujo solo está disponible en el controlador SQLSRV de Controladores de Microsoft para PHP para SQL Server, pero no en el controlador PDO_SQLSRV.
El controlador SQLSRV aprovecha las ventajas de las secuencias de PHP para recuperar grandes cantidades de datos del servidor. En el ejemplo de este tema se muestra cómo recuperar datos de caracteres como una secuencia.
Ejemplo
En el ejemplo siguiente se recupera una fila de la tabla Production.ProductReview de la base de datos de AdventureWorks. El campo Comments de la fila devuelta se recupera como un flujo y se muestra mediante la función PHP fpassthru.
El proceso de recuperación de los datos como una secuencia se realiza utilizando sqlsrv_fetch y sqlsrv_get_field con el tipo de valor devuelto como una secuencia de caracteres. El tipo de valor devuelto se especifica mediante la constante SQLSRV_PHPTYPE_STREAM. Para información sobre las constantes sqlsrv, consulte Constantes (controladores de Microsoft para PHP para SQL Server).
En el ejemplo se da por hecho que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Los resultados se agregan a la consola cuando se ejecuta el ejemplo en la línea de comandos.
<?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);
?>
Como en los tres primeros campos no se ha especificado el tipo de datos PHP devuelto, los campos se devuelven según el tipo de datos PHP predeterminado. Para obtener información sobre los tipos de datos PHP predeterminados, consulte Default PHP Data Types. Para obtener información sobre cómo especificar los tipos de valor devueltos PHP, consulte How to: Specify PHP Data Types.
Consulte también
Recuperación de datos como una secuencia con el controlador SQLSRV