Desenvolvimento - PHP

Acessando bases de dados PostgreSQL no PHP com a biblioteca ADODB

ADODB é uma biblioteca que abstrai o acesso aos bancos de dados, ou seja, ela simplifica inúmeras tarefas relacionadas ao PHP e as bases de dados.

por Marcelo Santos Araujo



ADODB é uma biblioteca que abstrai o acesso aos bancos de dados, ou seja, ela simplifica inúmeras tarefas relacionadas ao PHP e as bases de dados. A ADODB API é baseada na Microsoft ADO, uma biblioteca de acesso muito utilizada em Visual Basic e outros produtos Microsoft. Apesar da existência da PEAR DB (encontrada em http://pear.php.net), a ADODB apresenta recursos específicos, capazes de amenizar tarefas complexas em bases de dados, como por exemplo, paginação e criação de combobox(es).

A PEAR DB apresenta uma estrutura orientada a objetos mais rigorosa que a ADODB, bem como maior flexibilidade com outros pacotes da PEAR. Entretanto, quando tratamos de recursos complexos, devemos escolher a ADODB.

Primeiramente, faça o download do pacote ADODB no seguinte endereço: http://adodb.sourceforge.net/#download . Os bancos de dados suportados pela ADODB são os seguintes: Access, ADO, DB2, FrontBase, Informix, InterBase, Microsoft SQL Server, MySQL, Oracle, ODBC, PostgreSQL, SAPDB, SQLAnywhere, SQLite, Sybase e Visual FoxPro.

Conexão e consultas simples

Esta seção descreve um simples exemplo de conexão com o PostgreSQL usando a biblioteca ADODB. Observe o código abaixo:

Exemplo 1 - Conexão e exibição de dados

<?php
// Incluir a biblioteca
require_once("adodb/adodb.inc.php");
// Conexão ao PostgreSQL
$c = &ADONewConnection("postgres");
//PConnect => conexão persistente
$c->PConnect("host=host port=porta dbname=database user=usuario password=senha");
$consulta = $c->Execute("SELECT * FROM agenda");

// Exibição dos dados

while(!$consulta->EOF)
{
   echo "Nome: ".$consulta->fields[0]."  -  ".$consulta->fields[1]."<br>";
   gt;MoveNext(); 
}
        
   // número de registros da tabela AGENDA
   $total_registro = $consulta->RecordCount();
   echo "Total de registro(s): ".$total_registro;
?>

Segue abaixo uma tabela com os principais drivers e seus respectivos bancos de dados:

Exemplo 2 - Exibindo um Record Set em uma tabela HTML

<?php
// Incluir a biblioteca base
// Incluir a biblioteca de html
require_once("adodb/adodb.inc.php");
require_once("adodb/tohtml.inc.php");

// Conexão ao PostgreSQL

$c = &ADONewConnection("postgres");
//PConnect => conexão persistente

$c->PConnect("host=host port=porta dbname=database user=usuario password=senha");
$consulta = $c->Execute("SELECT * FROM agenda");
rs2html($consulta);

?>

O resultado disso é uma tabela HTML com todos os dados:

Exemplo 3 - Alterando os nomes das colunas em uma tabela HTML

<?php
// Incluir a biblioteca base
// Incluir a biblioteca de html
require_once("adodb/adodb.inc.php");
require_once("adodb/tohtml.inc.php");

// Conexão ao PostgreSQL

$c = &ADONewConnection("postgres");
//PConnect => conexão persistente

$c->PConnect("host=host port=porta dbname=database user=usuario password=senha");
$consulta = $c->Execute("SELECT * FROM agenda");
rs2html($consulta,false,array("Coluna Nome","Coluna Email"));

?>

O novo resultado é uma tabela HTML com nomes de colunas personalizados:

Exemplo 4 - Construção de Combobox a partir da base de dados

<?php
// Incluir a biblioteca
require_once("adodb/adodb.inc.php");
// Conexão ao PostgreSQL
$c = &ADONewConnection("postgres");
// Conexão Persistente
         $c->PConnect("host=host port=porta dbname=database user=usuario password=senha");
$consulta = $c->Execute("SELECT nome,nome FROM agenda");
print $consulta->GetMenu("lista_nome",null,false);

// GetMenu("nome",null,false) - desabilita o option vazio do combobox

?>

Agora podemos visualizar nosso combobox:

Exemplo 5 - Paginação com ADODB

<?php
// Incluir a biblioteca
require_once("adodb/adodb.inc.php");
require_once("adodb/adodb-pager.inc.php");
// Conexão ao PostgreSQL
$c = &ADONewConnection("postgres");
// Conexão Persistente
$c->PConnect("host=host port=porta dbname=database user=usuario password=senha");
// Paginação - 2 registros por página - Render(2)
$paginador = new ADODB_Pager($c,"SELECT nome,email FROM agenda");
$paginador->Render(2);
?>

Finalmente, o resultado:

Referência das bibliotecas:

Biblioteca de paginação: adodb-pager.inc.php

Construtor: ADODB_Pager (Paginação)
Método: Render(4) - 4 registros por página (por exemplo)

Biblioteca de HTML: tohtml.inc.php

rs2html() - transforma um Record Set em uma tabela HTML

Biblioteca de conexão: adodb.inc.php

&ADONewConnection($driver) (nome alternativo para NewADOConnection)
NewADOConnection($driver)

Métodos:

Connect($host,[$user],[$password],[$database]) (conexão simples)
PConnect($host,[$user],[$password],[$database]) (conexão persistente)

Execução de consultas SQL:

Método:
Execute($sql)

- INSERT
- DELETE
- UPDATE
- SELECT

Um exemplo mais avançado:

$arr = array(
	array("Vander Pereira",62),
	array("Donivaldo", 23),
	array("Jorge Eurípedes", 21)
	);
$ok = $db->Execute("insert into tabela(nome,idade) values (?,?)",$arr);

Este recurso aumenta muito o desempenho pois o SQL é preparado primeiro. As iterações ocorrem para cada registro do array. Muito útil para importar dados.

Para maiores detalhes e referências, visite o site com o manual da ADODB:
- http://phplens.com/lens/adodb/docs-adodb.htm

Marcelo Santos Araujo

Marcelo Santos Araujo