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
| dbase | msql | oci8 | sybase |
| fbsql | mssql | odbc | ldap |
| ibase | mysql | pgsql | ldap2 |
| ifx | mysqli | sqlite | ldap3 |
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.
<?php
require_once "DB.php";
$dsn = "mysql://usuario:senha@host/database";
$db = DB::connect($dsn);
if (DB::isError($db)) {
}
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$linha = $db->getRow(
"SELECT id, nome, email FROM usuario WHERE nome = ?",
);
if (DB::isError($linha)) {
die( $linha->
toString() );
}
$rs = $db->query("SELECT id, nome, email FROM usuario");
if (DB::isError($rs)) {
}
print "Numero de linhas selecionadas: " .
$rs->
numRows() .
"\n";
while ($row =& $rs->fetchRow()) {
print "{$row['id']} - {$row['nome']} <{$row['email']}>\n";
}
$rs->free();
$sth = $db->prepare("INSERT INTO usuario (nome, email) VALUES (?, ?)");
$data =
array('Priscilla',
'seuemail@dominio.com.br');
$rs = $db->execute($sth, $data);
if (DB::isError($rs)) {
}
$db->disconnect();
?>
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.