sqlsrv_fetch_array
Recupera la siguiente fila de datos como una matriz indizada numéricamente, una matriz asociativa o ambas.
Sintaxis
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])
Parámetros
$stmt: un recurso de instrucción correspondiente a una instrucción ejecutada.
$fetchType [OPCIONAL]: Una constante predefinida. Este parámetro puede tomar uno de los valores que se muestran en la siguiente tabla:
Value | Descripción |
---|---|
SQLSRV_FETCH_NUMERIC | La siguiente fila de datos se devuelve como una matriz numérica. |
SQLSRV_FETCH_ASSOC | La siguiente fila de datos se devuelve como una matriz asociativa. Las claves de matriz son los nombres de columna del conjunto de resultados. |
SQLSRV_FETCH_BOTH | La siguiente fila de datos se devuelve como una matriz numérica y una matriz asociativa. Este es el valor predeterminado. |
row [OPCIONAL]: Se ha agregado en la versión 1.1. Uno de los siguientes valores; sirve para especificar la fila a la que se accederá en un conjunto de resultados que utilice un cursor desplazable (Si se especifica row, se tiene que especificar explícitamente fetchtype, aunque se especifique el valor predeterminado).
- SQLSRV_SCROLL_NEXT
- SQLSRV_SCROLL_PRIOR
- SQLSRV_SCROLL_FIRST
- SQLSRV_SCROLL_LAST
- SQLSRV_SCROLL_ABSOLUTE
- SQLSRV_SCROLL_RELATIVE
Para obtener más información sobre estos valores, vea Especificación de un tipo de cursor y selección de filas. Se ha agregado compatibilidad con los cursores desplazables en la versión 1.1 de los Controladores de Microsoft para PHP para SQL Server.
offset [OPCIONAL]: Se usa con SQLSRV_SCROLL_ABSOLUTE y SQLSRV_SCROLL_RELATIVE para especificar la fila que se va a recuperar. El primer registro del conjunto de resultados es 0.
Valor devuelto
Si se recupera una fila de datos, se devuelve una matriz . Si no hay más filas para recuperar, se devolverá el valor Null . Si se produce un error, se devuelve el valor False .
En función del valor del parámetro $fetchType , la matriz que se devuelve puede ser una matrizindizada numéricamente, una matrizasociativa o ambas. De forma predeterminada, se devuelve una matriz con claves numérica y asociativas. El tipo de datos de un valor de la matriz devuelta será el tipo de datos PHP predeterminados. Para obtener información sobre los tipos de datos PHP predeterminados, consulte Default PHP Data Types.
Observaciones
Si se devuelve una columna sin nombre, la clave del elemento de la matriz asociativa será una cadena vacía (""). Por ejemplo, observe esta instrucción de Transact-SQL que inserta un valor en una tabla de base de datos y recupera la clave principal generada por el servidor:
INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);
SELECT SCOPE_IDENTITY()
Si el conjunto de resultados que devuelve la parte SELECT SCOPE_IDENTITY()
de esta instrucción se recupera como una matriz asociativa, la clave del valor devuelto será una cadena vacía ("") debido a que la columna devuelta no tiene nombre. Para evitar esto, puede recuperar el resultado como una matriz numérica o especificar un nombre para la columna devuelta en la instrucción de Transact-SQL. La instrucción siguiente es una forma de especificar un nombre de columna en Transact-SQL:
SELECT SCOPE_IDENTITY() AS PictureID
Si un conjunto de resultados contiene varias columnas sin nombre, se asignará el valor de la última columna sin nombre a clave de la cadena vacía ("").
Ejemplo de matriz asociativa
En el siguiente ejemplo se recupera cada fila de un conjunto de resultados como una matrizasociativa. 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 and execute the query. */
$tsql = "SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName='Alan'";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Retrieve each row as an associative array and display the results.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
echo $row['LastName'].", ".$row['FirstName']."\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Ejemplo de matriz indizada
En el siguiente ejemplo se recupera cada fila de un conjunto de resultados como una matriz indizada numéricamente.
En el ejemplo se recupera información de producto de la tabla Purchasing.PurchaseOrderDetail de la base de datos AdventureWorks de productos que tienen una fecha especificada y una cantidad con existencias (StockQty) inferior a un valor determinado.
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));
}
/* Define the query. */
$tsql = "SELECT ProductID,
UnitPrice,
StockedQty
FROM Purchasing.PurchaseOrderDetail
WHERE StockedQty < 3
AND DueDate='2002-01-29'";
/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql);
if ( $stmt )
{
echo "Statement executed.\n";
}
else
{
echo "Error in statement execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Iterate through the result set printing a row of data upon each
iteration.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{
echo "ProdID: ".$row[0]."\n";
echo "UnitPrice: ".$row[1]."\n";
echo "StockedQty: ".$row[2]."\n";
echo "-----------------\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
La función sqlsrv_fetch_array siempre devuelve datos según los Default PHP Data Types. Para obtener información sobre cómo especificar el tipo de datos PHP, vea Procedimiento para especificar tipos de datos PHP.
Si se recupera un campo sin nombre, la clave asociativa del elemento de matriz asociativa será una cadena vacía (""). Para obtener más información, vea sqlsrv_fetch_array.
Consulte también
Referencia de API del controlador SQLSRV
Sobre los ejemplos de código de la documentación
Guía de programación para los controladores de Microsoft para PHP para SQL Server