sqlsrv_fetch_array

Baixar o driver PHP

Recupera a próxima linha de dados como uma matriz indexada numericamente, matriz associativa ou ambas.

Sintaxe

  
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])  

parâmetros

$stmt: um recurso de instrução correspondente a uma instrução executada.

$fetchType [OPCIONAL]: uma constante predefinida. Esse parâmetro pode assumir um dos valores listados na tabela a seguir:

Valor Descrição
SQLSRV_FETCH_NUMERIC A próxima linha de dados é retornada como uma matriz numérica.
SQLSRV_FETCH_ASSOC A próxima linha de dados é retornada como uma matriz associativa. As chaves da matriz são os nomes das colunas no conjunto de resultados.
SQLSRV_FETCH_BOTH A próxima linha de dados é retornada tanto como uma matriz numérica quanto como uma matriz associativa. Esse é o valor padrão.

row [OPCIONAL]: Adicionado na versão 1.1. Um dos valores a seguir, especificando a linha a ser acessada em um conjunto de resultados que usa um cursor rolável. (Quando row for especificado, fetchtype deverá ser especificado explicitamente, mesmo se você especificar o valor padrão.)

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

Para obter mais informações sobre esses valores, consulte Especificando um tipo de cursor e selecionando linhas. O suporte para cursor rolável foi adicionado na versão 1.1 do Drivers da Microsoft para PHP para SQL Server.

offset [OPCIONAL]: usado com SQLSRV_SCROLL_ABSOLUTE e SQLSRV_SCROLL_RELATIVE para especificar a linha a ser recuperada. O primeiro registro no conjunto de resultados é 0.

Valor retornado

Se uma linha de dados for recuperada, uma matriz será retornada. Se não houver mais linhas para recuperar, null será retornado. Se ocorrer um erro, false será retornado.

Com base no valor do parâmetro $fetchType retornado, a matriz retornada poderá ser uma matrizindexada numericamente, uma matrizassociativa ou ambas. Por padrão, uma matriz com chaves numéricas e associativas é retornada. O tipo de dados de um valor na matriz retornada será o tipo de dados do PHP padrão. Para obter informações sobre os tipos de dados padrão do PHP, consulte Default PHP Data Types.

Comentários

Se uma coluna sem nome for retornada, a chave associativa do elemento da matriz será uma cadeia de caracteres vazia (""). Por exemplo, considere esta instrução Transact-SQL que insere um valor em uma tabela de banco de dados e recupera a chave primária gerada pelo servidor:

INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);  
SELECT SCOPE_IDENTITY()

Se o conjunto de resultados retornado pela parte SELECT SCOPE_IDENTITY() dessa instrução for recuperado como uma matriz associativa, a chave do valor retornado será uma cadeia de caracteres vazia ("") porque a coluna retornada não tem nome. Para evitar isso, você pode recuperar o resultado como uma matriz numérica ou pode especificar um nome para a coluna retornada na instrução Transact-SQL. A seguinte instrução é uma forma de especificar um nome de coluna no Transact-SQL:

SELECT SCOPE_IDENTITY() AS PictureID

Se um conjunto de resultados contiver várias colunas sem nome, o valor da última coluna sem nome será atribuído à chave da cadeia de caracteres vazia ("").

Exemplo de matriz associativa

O exemplo a seguir recupera cada linha de um conjunto de resultados como uma matrizassociativa. O exemplo supõe que o SQL Server e o banco de dados do AdventureWorks estejam instalados no computador local. Toda a saída será gravada no console quando o exemplo for executado da linha de comando.

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

Exemplo de matriz indexada

O exemplo a seguir recupera cada linha de um conjunto de resultados como uma matriz indexada numericamente.

O exemplo recupera informações de produtos da tabela Purchasing.PurchaseOrderDetail do banco de dados AdventureWorks para produtos que tenham uma data especificada e uma quantidade em estoque (StockQty) menor que um valor especificado.

O exemplo supõe que o SQL Server e o banco de dados AdventureWorks estejam instalados no computador local. Toda a saída será gravada no console quando o exemplo for executado da linha de comando.

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

A função sqlsrv_fetch_array sempre retorna dados de acordo com os Default PHP Data Types. Para obter informações sobre como especificar o tipo de dados do PHP, confira Como: especificar tipos de dados do PHP.

Se um campo sem nome for recuperado, a chave associativa do elemento da matriz será uma cadeia de caracteres vazia (""). Para obter mais informações, consulte sqlsrv_fetch_array.

Consulte Também

Referência da API do driver SQLSRV

Recuperando dados

Sobre exemplos de código na documentação

Guia de programação do Microsoft Drivers para PHP para SQL Server