Compartir a través de


Cómo especificar tipos de datos de PHP

En los siguientes pasos se describe cómo usar el Controlador de SQL Server para PHP para especificar los tipos de datos de PHP cuando se recuperan datos del servidor:

  1. Configure y ejecute una consulta de Transact-SQL con sqlsrv_query o la combinación sqlsrv_prepare/sqlsrv_execute.
  2. Haga que una fila de datos esté disponible para su lectura con sqlsrv_fetch.
  3. Recupere los datos de campo de una fila devuelta mediante sqlsrv_get_field con los tipos de datos de PHP que desee, especificados como el tercer parámetro opcional. Si el tercer parámetro opcional no está especificado, los datos se devolverán según los tipos de datos predeterminados de PHP. Para obtener información acerca de los tipos devueltos predeterminados de PHP Server, vea Tipos de datos predeterminados de PHP.
    Para obtener información acerca de las constantes que se usan para especificar el tipo de datos de PHP, vea la sección de los PHPTYPE de Constantes SQLSRV.

Ejemplo

En el siguiente ejemplo, se recuperan filas de la tabla Production.ProductReview de la base de datos AdventureWorks. En cada fila devuelta el campo ReviewDate se devuelve como una cadena y el campo Comments se devuelve como una secuencia. Los datos en secuencia se muestran mediante la función fpassthru de PHP.

En el ejemplo se supone que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Cuando se ejecuta el ejemplo desde la línea de comandos, todos los resultados se escriben en la consola.

<?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);
?>

En el ejemplo, recuperar el segundo campo (ReviewDate) como una cadena mantiene la precisión de milisegundos del tipo de datos DATETIME de SQL Server. De forma predeterminada, el tipo de datos DATETIME de SQL Server se recupera como un objeto DateTime de PHP en el que se ha perdido la precisión de milisegundos.

El cuarto campo (Comments) se recupera como una secuencia con fines demostrativos. De forma predeterminada, el tipo de datos nvarchar(3850) de SQL Server se recupera como una cadena, aceptable para la mayoría de los casos.

Nota

La función sqlsrv_field_metadata proporciona una manera de obtener información de campo, incluida la información de tipo, antes de ejecutar una consulta.

Vea también

Tareas

Cómo recuperar parámetros de salida
Cómo recuperar los parámetros Input/Output

Conceptos

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

Otros recursos

Recuperar datos