Um simples tutorial do PEAR DB

PEAR
Enviado por Pedro Faria em Qui, 17/11/2005 - 13:27.PEAR

Bem, hoje eu vou ensinar, de uma forma bem simples, como começar a usar a classe"DB":http://pear.php.net/package/DB do PEAR . Obviamente, você pode estudar mais a fundo pela documentação deste pacote .

Por que usar o PEAR DB

  • Usar as funções, que o php disponibiliza, diretamente no seu código torna seu projeto restrito à aquele banco de dados.
  • Redução do seu código.
  • Facilidade para tratar erro.

Extensões de SGBDs suportadas

dbasemsqloci8sybase
fbsqlmssqlodbcldap
ibasemysqlpgsqlldap2
ifxmysqlisqliteldap3

Usando

Vou mostrar como fica simples a interação com o banco de dados quando usamos o PEAR::DB. Primeiro, vou escrever um exemplo e depois vou explicando as etapas.

  1. <?php
  2.  
  3. require_once "DB.php";
  4.  
  5. $dsn = "mysql://usuario:senha@host/database";
  6.  
  7. $db = DB::connect($dsn);
  8. if (DB::isError($db)) {
  9.     die($db->getMessage());
  10. }
  11.  
  12. $db->setFetchMode(DB_FETCHMODE_ASSOC);
  13.  
  14.  
  15. $linha = $db->getRow(
  16.     "SELECT id, nome, email FROM usuario WHERE nome = ?",
  17.     array('pedro')
  18.     );
  19. if (DB::isError($linha)) {
  20.     die( $linha->toString() );
  21. }
  22.  
  23. $rs = $db->query("SELECT id, nome, email FROM usuario");
  24. if (DB::isError($rs)) {
  25.     die( $rs->toString() );
  26. }
  27.  
  28. print "Numero de linhas selecionadas: " .$rs->numRows() . "\n";
  29.  
  30. while ($row =& $rs->fetchRow()) {
  31.     print "{$row['id']} - {$row['nome']} <{$row['email']}>\n";
  32. }
  33. $rs->free();
  34.  
  35. $sth = $db->prepare("INSERT INTO usuario (nome, email) VALUES (?, ?)");
  36. $data = array('Priscilla', 'seuemail@dominio.com.br');
  37. $rs = $db->execute($sth, $data);
  38. if (DB::isError($rs)) {
  39.     die($rs->toString());
  40. }
  41.  
  42.  
  43. $db->disconnect();
  44.  
  45. ?>

Vamos comentar esse código...

Linha 3: Inclue a biblioteca.

Linha 5: DSN. Define as especificações da conexão a ser estabelecida.

Linhas 7 a 10: Conecta ao banco de dados e verifica se houve algum erro. A Classe DB SEMPRE retorna o objeto DB_Error quando acontece algum erro.

Linha 12: Diz ao PEAR::DB para sempre retornar um array associativo quando for retornar um resultado de um select. Existem também as constantes DB_FETCHMODE_ORDERED e DB_FETCHMODE_OBJECT.

Linhas 14 a 20: Seleciona SOMENTE uma linha e faz o tratamento de erro. Repare no SQL tem um '?'... então, ele subistitue o ? por 'pedro' já fazendo o quote. Caso tenha mais de um '?', ele vai subistituindo por cada item do array $data na ordem.

Linhas 22 a 32: Executa a query e retorna DB_result ou DB_Error caso ocorra algum erro. Imprime a quantidade de registros selecionados com $rs->numRows() e faz uma varredura no resultado da query pegando cada registro e imprimindo na tela.

Linhas 34 a 39: Prepara a query usando o mesmo esquema com as '?', define os dados a serem inserido, executa e trata o erro caso ocorra. Você pode usar para updates e deletes também.

Conclusão

Bem, falei sobre algumas das principais funcionalidades do PEAR::DB... não deixe de ler a documentação para fazer uma pesquisa mais detalhada do poder desta biblioteca.



Enviado por macguyver em Sex, 18/11/2005 - 09:07.

Acho interessante utilizar autoPrepare e/ou autoExecute, assim o código fica mais portável. Deste modo é possível escrever por exemplo um código que para ser usado em um database diferente, bastará alterar o tipo do DB no DSN.

Enviado por marcio (não verificado(a)) em Dom, 09/12/2007 - 09:57.

que arquivo eh esse, "db.php"

tem que criar isso? como funcina? ao inserir a linha 3, relativa a esse arquivo, o eclipse indica nao encontrar esse arquivo, que de fato nao tenho. o que deve conter nele? ou onde encontrar?
outra coisa, o PEAR deve ser habilitado no php.ini ou ja vem padrao?

[]'s
Marcio.

Enviado por Pedro Faria em Dom, 09/12/2007 - 10:43.

Tipo... o post é sobre PEAR DB... então... hein hein?

Enviado por guest (não verificado(a)) em Qua, 28/04/2010 - 18:43.

O PEAR DB já vem junto com o php, voce precisa apenas configurar o php.ini abilitando o seu uso, basta apenas tirar o ";"

Enviado por Lucas M. C. e Martins (não verificado(a)) em Qui, 19/10/2006 - 23:06.

só uma pequena correção...
na linha 37 ocorreu um erro de digitação, o correto seria:

$rs = $db->execute($sth, $data);

Enviado por Pedro Faria em Sex, 20/10/2006 - 08:46.

Valeu Lucas... já editei o código.

Um abração.