Compartir a través de


Cómo recuperar datos de caracteres como una secuencia

El Controlador de SQL Server para PHP 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 siguiente ejemplo se recupera una fila de la tabla Production.ProductReview de la base de datos AdventureWorks. El campo Comments de la fila devuelta se recupera como una secuencia y se muestra mediante la función fpassthru de PHP.

Recuperar datos como una secuencia se consigue mediante el uso de sqlsrv_fetch y sqlsrv_get_field con el tipo de valor devuelto especificado como una secuencia de caracteres. El tipo de valor devuelto se especifica mediante la constante SQLSRV_PHPTYPE_STREAM. Para obtener información acerca de las constantes de sqlsrv, vea Constantes SQLSRV.

En el ejemplo se supone que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Todos los resultados se escriben en la consola cuando el ejemplo se ejecuta desde 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 no se especifica ningún tipo de valor devuelto de PHP para los tres primeros campos, se devuelve cada uno de los campos según su tipo de PHP predeterminado. Para obtener información acerca de los tipos de datos predeterminados de PHP, vea Tipos de datos predeterminados de PHP. Para obtener información acerca de cómo especificar los tipos devueltos de PHP, vea Cómo especificar tipos de datos de PHP.

Vea también

Conceptos

Acerca de ejemplos de código en la documentación

Otros recursos

Recuperar datos
Recuperar datos como una secuencia