Partilhar via


sqlsrv_fetch_array

Baixar driver PHP

Recupera a próxima linha de dados como uma matriz numericamente indexada, 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. Este 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 de matriz são os nomes das colunas no conjunto de resultados.
SQLSRV_FETCH_BOTH A próxima linha de dados é retornada como uma matriz numérica e uma matriz associativa. Este é o valor padrão.

linha [OPCIONAL]: Adicionada na versão 1.1. Um dos seguintes valores, especificando a linha a ser acessada em um conjunto de resultados que usa um cursor rolável. (Quando a linha é especificada, fetchtype deve ser explicitamente especificado, mesmo que você especifique 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. Suporte de cursor rolável foi adicionado na versão 1.1 dos drivers da Microsoft para PHP para SQL Server.

deslocamento [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 de retorno

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 , a matriz retornada pode ser uma matriz numericamente indexada, uma matriz associativa 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 PHP padrão. Para obter informações sobre tipos de dados PHP padrão, consulte Tipos de dados PHP padrão.

Observações

Se uma coluna sem nome for retornada, a chave associativa para o elemento de 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 SELECT SCOPE_IDENTITY() parte desta instrução for recuperado como uma matriz associativa, a chave para o 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 instrução a seguir é uma maneira de especificar um nome de coluna no Transact-SQL:

SELECT SCOPE_IDENTITY() AS PictureID

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

Exemplo de matriz associativa

O exemplo a seguir recupera cada linha de um conjunto de resultados como uma matriz associativa. O exemplo pressupõe que o SQL Server e o banco de dados AdventureWorks estejam instalados no computador local. Toda a saída é gravada no console quando o exemplo é executado a partir 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 numericamente indexada.

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

O exemplo pressupõe que o SQL Server e o banco de dados AdventureWorks estejam instalados no computador local. Toda a saída é gravada no console quando o exemplo é executado a partir 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 tipos de dados PHP padrão. Para obter informações sobre como especificar o tipo de dados PHP, consulte Como especificar tipos de dados PHP.

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

Ver também

Referência da API do driver SQLSRV

Recuperando dados

Sobre Exemplos de Código na Documentação

Guia de programação para os drivers da Microsoft para PHP para SQL Server