Acessando banco de dados usando PHP e ADODB 

Escrito por Fabio Centenaro • Nov 2nd, 2007 • Categoria: PHP, Programação

O PHP oferece poderosos recursos nativos para acesso e manipulação de dados. Umas das dificuldades enfrentadas no dia-a-dia é quando precisamos fazer uma aplicação conversar com dois ou mais servidores de banco de dados. Por exemplo, quando uma aplicação precisa rodar tanto em mysql quanto em PostgreSQL

No PHP, para acessar o mysql usamos a função mysql_connect. Já para o PostgreSQL, a função pg_sql. E assim funciona para todos os comandos de operação com os bancos de dados, sempre utilizando o tipo do banco como prefixo.

Na hora de migrar de um banco para outro, a manutenção do sistema fica grande e dispendiosa. E fazer ifs para testar o banco que está sendo utilizado a cada operação é ainda pior, pois se um dia alguém resolver usar outro banco, a desgraça está instalada.

Podemos resolver este problema utilizando a biblioteca ADODB, responsável pela abstração do banco de dados. Com ela, além de facilitar, e muito, a manipulação dos dados, ainda temos a possibilidade de ter um sistema que suporta a maioria dos bancos de dados existentes no mercado com pouca ou nenhuma alteração no código da aplicação.

O download da biblioteca pode ser feito no seguinte endereço: http://adodb.sourceforge.net/#download

Conectando com o banco de dados

Efetuar a conexão com o banco de dados é muito simples. Basta utilizar o código abaixo:

include_once(”adodb/adodb.inc.php”);
$driver = “mysql”;

$db = ADONewConnection($driver);
$db->Connect($server, $username, $password, $database);

Chamamoso método Connect do objeto $db e passamos como parâmetros as informações do banco de dados, como segue: IP ou nome do servidor, nome de usuário, senha e nome do banco de dados.

A variável $driver armazena o nome do driver de banco de dados que será usado. Confira os principais drivers disponíveis:

ado_access - Acesso para Microsoft Access usando OLEDB
ado_mssql - Acesso para o Microsoft SQL Server usando OLEDB
ibase - Acesso para o Interbase
mssql - Acesso ao SQL Server usando drivers nativos do PHP
mysql - Acesso ao mySQL
oci8 - Acesso ao Oracle
postgres7 - Acesso ao Postgresql com as funcionalidades da versão 7
postgres8 - Acesso ao Postgresql com as funcionalidades da versão 8
sybase - Acesso ao Sybase

Manipulando dados

Como qualquer finalidade de um banco de dados é podermos manipular os dados, seja inserindo, alterando, excluindo ou recuperando informações, a biblioteca ADODB possui recursos que facilitam e agilizam estes processos.

Inserindo, alterando e excluindo

Executar expressões SQL não poderia ser mais fácil: basta chamar o método execute do objeto de conexão e voilá, estamos executando nossos comandos. Alguns exemplos:

$db->execute(”INSERT INTO TABELA (CAMPO1, CAMPO2) VALUES (1,2)”);
$db->execute(”UPDATE TABELA SET CAMPO2 = 1 WHERE CAMPO1 = 0″);
$db->execute(”DELETE FROM TABELA WHERE CAMPO1 = 2″);

Simples, não?

Buscando dados

Uma outra função muito usada é a de buscar os dados que estão armazenados, os famosos selects. Pois bem, isso também não é tarefa difícil. Vamos ao exemplo:

$rs = $db->execute(”SELECT * FROM TABELA”);

Note que usamos o mesmo método execute, porém quando executamos um comando select a biblioteca nos retorna um conjunto de dados na variável $db. E é através dessa variável que iremos acessar os dados.

Usando a propriedade fields temos acesso a todos os campos retornados pelo nosso select. Podemos informar o índice ou mesmo o nome do campo, como vemos a seguir:

$variavel = $rs->fields[0];
echo $rs->fields["campo1"];

Novamente vemos como é simples!

Para varrer todos os registros retornados, ou seja, fazer um loop pelos dados, usamos a seguinte estrutura:

while (! $rs->EOF)
{
//comandos a serem executados. Ex: echo $rs->fields["nome"];
$rs->movenext();
}

Pronto, dessa forma percorremos todo o recordset e imprimimos na página o campo nome que foi retornado da consulta.

Mas o SQL Server tem que ser diferente!

É verdade. Quando estamos trabalhando com o SQL Server, algumas coisas funcionam um pouco diferente. A principal mudança é que ao invés de usarmos colchetes - [] - para acessar os campos da coleção fields, mas sim parênteses - ().

Então, com o SQL Server fazemos da seguinte maneira:

echo $rs->fields(”campo1″);

Com isso cai por terra a possibilidade de acessar qualquer tipo de banco de dados sem alteração de código.

Para tudo existe uma solução!

Sim, nem tudo está perdido! Mesmo que o SQL Server trabalhe de forma diferente, ainda existe uma maneira de resolver este problema: o objeto recordset possui um método chamado FetchObject que retorna um objeto cujos atributos são os próprios campos do banco de dados. E o melhor de tudo, ele funciona com qualquer banco.

O único detalhe é que os nomes dos campos devem ser escritos em maiúsculo.

Então vamos ver como fica o código:

$obj = $rs->FetchObject();
echo $obj->CAMPO1;

Dentro de um laço usamos da seguinte forma:

$while (! $rs->EOF)
{
$obj = $rs->FetchObject();
echo $obj->CAMPO1;
$rs->movenext();
}

Concluindo

Fica fácil notar o quanto utilizar uma biblioteca como essa, além da excelente portabilidade, pode agilizar o desenvolvimento de uma aplicação. A ADODB é um must-have em qualquer site ou sistema desenvolvido em PHP. Consultando o manual da biblioteca é possível expandir ainda mais o leque de recursos que ela proporciona. Não deixe de conferir!

Confira ofertas de: DVD, filmes, celular, notebook, livros, jogos, Wii, PS3, MP4

Tagged as: , , , ,

Deixe um comentário