sqlsrv_fetch_object

(No version information available, might only be in Git)

sqlsrv_fetch_objectRecupera a próxima linha de dados em um conjunto de resultados como um objeto

Descrição

sqlsrv_fetch_object(
    resource $stmt,
    string $className = ?,
    array $ctorParams = ?,
    int $row = ?,
    int $offset = ?
): mixed

Recupera a próxima linha de dados em um conjunto de resultados como uma instância da classe especificada com propriedades que correspondem aos nomes dos campos da linha e valores que correspondem aos valores dos campos da linha.

Parâmetros

stmt

Um recurso de declaração criado por sqlsrv_query() ou sqlsrv_execute().

className

O nome da classe a ser instanciada. Se nenhum nome de classe for especificado, stdClass é instanciado.

ctorParams

Valores passados para o construtor da classe especificada. Se o construtor da classe especificada aceitar parâmetros, o array ctorParams deve ser fornecido.

row

A linha a ser acessada. Este parâmetro só pode ser usado se a declaração especificada foi preparada com um cursor rolável. Nesse caso, esse parâmetro pode assumir um dos seguintes valores:

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

Especifica a linha a ser acessada se o parâmetro row for definido como SQLSRV_SCROLL_ABSOLUTE ou SQLSRV_SCROLL_RELATIVE. Observe que a primeira linha em um conjunto de resultados tem índice 0.

Valor Retornado

Retorna um objeto em caso de sucesso, null se não houver mais linhas para retornar, e false se ocorrer um erro ou se a classe especificada não existir.

Exemplos

Example #1 Exemplo de sqlsrv_fetch_object()

O exemplo a seguir demonstra como recuperar uma linha como um objeto stdClass.

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT fName, lName FROM Table_1";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// Recupera cada linha como um objeto.
// Como nenhum nome de classe é especificado, cada linha será recuperada como um objeto stdClass.
// Os nomes das propriedades correspondem aos nomes dos campos.
while( $obj = sqlsrv_fetch_object( $stmt)) {
      echo $obj->fName.", ".$obj->lName."<br />";
}
?>

Notas

Se um nome de classe for especificado com o parâmetro opcional $className e a classe tiver propriedades cujos nomes correspondam aos nomes dos campos do conjunto de resultados, os valores do conjunto de resultados correspondentes são aplicados às propriedades. Se um nome de campo do conjunto de resultados não corresponder a uma propriedade da classe, uma propriedade com o nome do campo do conjunto de resultados é adicionada ao objeto e o valor do conjunto de resultados é aplicado à propriedade. As seguintes regras se aplicam ao usar o parâmetro $className:

  • A correspondência entre nome de campo e propriedade é sensível a maiúsculas e minúsculas.
  • A correspondência entre nome de campo e propriedade ocorre independentemente dos modificadores de acesso.
  • Os tipos de dados da propriedade da classe são ignorados ao aplicar um valor de campo a uma propriedade.
  • Se a classe não existir, a função retorna false e adiciona um erro à coleção de erros.
Independentemente de o parâmetro $className ser fornecido ou não, se um campo sem nome for retornado, o valor do campo será ignorado e um aviso será adicionado à coleção de erros.

Ao consumir um conjunto de resultados que tenha várias colunas com o mesmo nome, pode ser melhor usar sqlsrv_fetch_array() ou a combinação de sqlsrv_fetch() e sqlsrv_get_field().

Veja Também