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 AraujoA 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:
Drivers | Banco de Dados |
Ado | Database genérica ADO |
Access | Microsoft Acess |
postgres | PostgreSQL 7 (mesmo que postgres7) |
postgres7 | PostgreSQL 7 |
db2 | DB2 |
postgres64 | PostgreSQL 6.4 ou inferior |
ibase | InterBase 6 ou inferior |
firebird | InterBase (Versão Firebird) |
odbc | DSN ODBC |
informix72 | Informix 7.2 ou anterior |
mysql | MySQL (sem suporte à transações) |
mssql | Microsoft SQL Server 7 ou superior |
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