+1

Utilizando a PEAR::DB

criado por Rogério Bragil em 13/07/2004 2:38pm
Executar uma query com a Pear::DB também é bastante simples. Basta passar a string para o método query e testar se houve algum erro:

<?php
// string da query
$sql= "SELECT * FROM usuarios";

// executando a consulta
$res= $conn->query($sql);

// testando se houve algum erro
if (DB::isError($res)) {
    die($res->getMessage());
}
?>


Se a consulta for um SELECT, você precisará obter os dados resultantes. Há dois métodos que podem fazer isso para você: fetchRow() e fetchInto().

fetchInto()

O método fetchInto() recebe como argumento um array, onde será armazenada a linha do resultado (um campo em cada índice do array).

OBS: Nos próximos exemplos, suponhamos que a tabela usuarios da consulta acima possua os campos nome e fone.

while ($lin = $res->fetchInto($lin))
{
    echo $lin[0]; // imprime campo nome
    echo $lin[1]; // imprime campo fone
}

fetchRow()

O método fetchRow() retorna uma linha do resultado da consulta. Se você não especificar nenhum argumento, essa linha será retornada no formato de um array ordenado.

while ($lin = $res->fetchRow()) {
    echo $lin[0]; // imprime campo nome
    echo $lin[1]; // imprime campo fone
}

Existem outras formas de buscar o resultado com o fetchRow(), onde deve-se passar o modo como argumento. Existem 3 modos:

DB_FETCHMODE_ORDERED: é o padrão. Retorna os resultados em um array ordenado, como vimos no exemplo acima.

DB_FETCHMODE_ASSOC: retorna os resultados em um array associativo, com os nomes dos campos como chaves. Exemplo:

while ($lin = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
    echo $lin['nome']; // imprime campo nome
    echo $lin['fone']; // imprime campo fone
}

DB_FETCHMODE_OBJECT: retorna os resultados na forma de um objeto, onde os campos são como propriedades. Exemplo:

while ($lin = $res->fetchRow(DB_FETCHMODE_OBJECT)) {
    echo $lin->nome; // imprime campo nome
    echo $lin->fone; // imprime campo fone
}

numRows e numCols

numRows(): exibe o número de linhas resultantes. Exemplo:

echo $res->numRows();

numCols(): exibe o número de colunas resultantes. Exemplo:

echo $res->numCols();

Liberando o espaço de memória

Ao terminar a manipulação do resultado, é recomendável liberar o espaço ocupado em memória com o método free:

$res->free;

Para encerrar a conexão, basta o seguinte comando:

$conn->disconnect();

A Pear::DB oferece muitos recursos. Neste artigo abordamos apenas o básico do básico para você começar a "brincar" e se familiarizar com essa ferramenta tão poderosa e que pode facilitar bastante a vida de você, programador.

Para conhecer todos os seus recursos, acesse a documentação em http://pear.php.net .

Comentários:

Mostrando 1 - 9 de 9 comentários
Paul Muad'Dib disse:
Parece ser uma ótima solução.
E quanto a performance? alguém já fez algum teste com grande massa de dados?

Muito bom o seu artigo Rogério!

10/02/2007 4:56pm (~18 anos atrás)

Dúvidas entre usar ADOdb e PEAR BD?

deem uma olhada:
http://phplens.com/lens/adodb/
27/07/2004 10:00am (~20 anos atrás)

o benchmark eu não tenho, mas já li sobre a PEAR::DB ser bem lenta em relação a ADODB... por isso existem as alternativas PEAR::MDB e PEAR::MDB2...
20/07/2004 9:32am (~20 anos atrás)

existe algum benchmark para libs como o PEAR e ADOdb

?

18/07/2004 6:27pm (~20 anos atrás)

Procurei informações sobre conexao com o OpenBASE no site pear.php.net e nao encontrei nada.
Será que essa é a unica base de dados que ele não consegue se conectar, da pra dar um help ai. To precisando muito.
Valeu
16/07/2004 9:40am (~20 anos atrás)

a pear é uma ótima solução

pena que o pessoal de lá não tem muitos parâmetros de seleção de pacotes.

acho que poderia ser adicionado coisas com qualidade mais regularmente
16/07/2004 6:10am (~20 anos atrás)

bom venho usando as classes do pear a ums 2 meses é....
Muito bom, so pelo fato de não ter que reinventar a roda cada vez que voce quer fazer uma coisa quebra alto galho
15/07/2004 1:00pm (~20 anos atrás)

mas já vem com o PHP isso...

só há também a opção na hora de compilar
--without-pear ;)
14/07/2004 12:20pm (~20 anos atrás)

Para instalar em qualquer distribuição use esse comando.

lynx -source http://go-pear.org/ | php

Para listar os pacotes disponiveis use isso :
pear remote-list

E para instala-los ou atualiza-los use isso :
pear install <nome do pacote>

13/07/2004 4:13pm (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)