PDOStatement::fetch
Recupera uma linha de um conjunto de resultados.
Sintaxe
mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );
Parâmetros
$fetch_style: um símbolo (inteiro) opcional especificando o formato dos dados da linha. Consulte a seção Comentários para obter a lista de valores possíveis para $fetch_style. O padrão é PDO::FETCH_BOTH. $fetch_style no método de busca substituirá o $fetch_style especificado no método PDO::query.
$cursor_orientation: um símbolo (inteiro) opcional que indica a linha a ser recuperada quando a instrução prepare especifica PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
. Consulte a seção Comentários para obter a lista de valores possíveis para $cursor_orientation. Consulte PDO::prepare para obter um exemplo usando um cursor rolável.
$cursor_offset: um símbolo (inteiro) opcional que especifica a linha a ser buscada quando$cursor_orientation é PDO::FETCH_ORI_ABS ou PDO::FETCH_ORI_REL e PDO::ATTR_CURSOR é PDO::CURSOR_SCROLL.
Valor de retorno
Um valor misto que retorna uma linha ou false.
Comentários
O cursor é avançado automaticamente quando a busca é chamada. A tabela a seguir contém a lista de possíveis valores de $fetch_style.
$fetch_style | Descrição |
---|---|
PDO::FETCH_ASSOC | Especifica uma matriz indexada pelo nome da coluna. |
PDO::FETCH_BOTH | Especifica uma matriz indexada pelo nome da coluna e ordem com base em zero. Este é o padrão. |
PDO::FETCH_BOUND | Retorna true e atribui os valores conforme especificado por PDOStatement::bindColumn. |
PDO::FETCH_CLASS | Cria uma instância e mapeia as colunas para propriedades nomeadas. Chame PDOStatement::setFetchMode antes de chamar a busca. |
PDO::FETCH_INTO | Atualiza uma instância da classe solicitada. Chame PDOStatement::setFetchMode antes de chamar a busca. |
PDO::FETCH_LAZY | Cria nomes de variáveis durante o acesso e cria um objeto sem nome. |
PDO::FETCH_NUM | Especifica uma matriz indexada por ordem de colunas com base em zero. |
PDO::FETCH_OBJ | Especifica um objeto sem nome com nomes de propriedades que são mapeados para nomes de coluna. |
Se o cursor estiver no fim do conjunto de resultados (a última linha foi recuperada e o cursor avançou além do limite do conjunto de resultados) e se o cursor for somente de avanço (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), as chamadas de busca subsequentes falharão.
Se o cursor for rolável (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), a busca moverá o cursor dentro do limite do conjunto de resultados. A tabela a seguir contém a lista de possíveis valores de $cursor_orientation.
$cursor_orientation | Descrição |
---|---|
PDO::FETCH_ORI_NEXT | Recupera a próxima linha. Este é o padrão. |
PDO::FETCH_ORI_PRIOR | Recupera a linha anterior. |
PDO::FETCH_ORI_FIRST | Recupera a primeira linha. |
PDO::FETCH_ORI_LAST | Recupera a última linha. |
PDO::FETCH_ORI_ABS, num | Recupera a linha solicitada em $cursor_offset pelo número da linha. |
PDO::FETCH_ORI_REL, num | Recupera a linha solicitada em $cursor_offset por posição relativa com base na posição atual. |
Se o valor especificado para $cursor_offset ou $cursor_orientation resultar em uma posição fora do limite do conjunto de resultados, haverá falha na busca.
O suporte para PDO foi adicionado na versão 2.0 dos Drivers da Microsoft para PHP para SQL Server.
Exemplo
<?php
$server = "(local)";
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
print( "\n---------- PDO::FETCH_CLASS -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt->setFetchMode(PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch(PDO::FETCH_CLASS)) {
print($row . "\n");
}
print( "\n---------- PDO::FETCH_INTO -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
$c_obj = new cc( '' );
$stmt->setFetchMode(PDO::FETCH_INTO, $c_obj);
while ( $row = $stmt->fetch(PDO::FETCH_INTO)) {
echo "$c_obj\n";
}
print( "\n---------- PDO::FETCH_ASSOC -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_ASSOC );
print_r( $result );
print( "\n---------- PDO::FETCH_NUM -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_NUM );
print_r ($result );
print( "\n---------- PDO::FETCH_BOTH -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_BOTH );
print_r( $result );
print( "\n---------- PDO::FETCH_LAZY -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_LAZY );
print_r( $result );
print( "\n---------- PDO::FETCH_OBJ -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_OBJ );
print $result->Name;
print( "\n \n" );
print( "\n---------- PDO::FETCH_BOUND -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$stmt->bindColumn('Name', $name);
$result = $stmt->fetch( PDO::FETCH_BOUND );
print $name;
print( "\n \n" );
?>