Você está na página 1de 3

Acessando banco de dados usando PHP e ADODB

Escrito por Fabio Centenaro Nov 2nd, 2007 Categoria: PHP, Programao O PHP oferece poderosos recursos nativos para acesso e manipulao de dados. Umas das dificuldades enfrentadas no dia-a-dia quando precisamos fazer uma aplicao conversar com dois ou mais servidores de banco de dados. Por exemplo, quando uma aplicao precisa rodar tanto em mysql quanto em PostgreSQL No PHP, para acessar o mysql usamos a funo mysql_connect. J para o PostgreSQL, a funo pg_sql. E assim funciona para todos os comandos de operao com os bancos de dados, sempre utilizando o tipo do banco como prefixo. Na hora de migrar de um banco para outro, a manuteno do sistema fica grande e dispendiosa. E fazer ifs para testar o banco que est sendo utilizado a cada operao ainda pior, pois se um dia algum resolver usar outro banco, a desgraa est instalada. Podemos resolver este problema utilizando a biblioteca ADODB, responsvel pela abstrao do banco de dados. Com ela, alm de facilitar, e muito, a manipulao 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 alterao no cdigo da aplicao. O download da biblioteca pode ser feito no seguinte endereo: http://adodb.sourceforge.net/#download

Conectando com o banco de dados


Efetuar a conexo com o banco de dados muito simples. Basta utilizar o cdigo abaixo: include_once(adodb/adodb.inc.php); $driver = mysql; $db = ADONewConnection($driver); $db->Connect($server, $username, $password, $database); Chamamoso mtodo Connect do objeto $db e passamos como parmetros as informaes do banco de dados, como segue: IP ou nome do servidor, nome de usurio, senha e nome do banco de dados. A varivel $driver armazena o nome do driver de banco de dados que ser usado. Confira os principais drivers disponveis: 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 verso 7 postgres8 - Acesso ao Postgresql com as funcionalidades da verso 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 informaes, a biblioteca ADODB possui recursos que facilitam e agilizam estes processos. Inserindo, alterando e excluindo Executar expresses SQL no poderia ser mais fcil: basta chamar o mtodo execute do objeto de conexo 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, no? Buscando dados Uma outra funo muito usada a de buscar os dados que esto armazenados, os famosos selects. Pois bem, isso tambm no tarefa difcil. Vamos ao exemplo: $rs = $db->execute(SELECT * FROM TABELA); Note que usamos o mesmo mtodo execute, porm quando executamos um comando select a biblioteca nos retorna um conjunto de dados na varivel $db. E atravs dessa varivel 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 pgina 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 mudana que ao invs de usarmos colchetes - [] - para acessar os campos da coleo fields, mas sim parnteses - (). Ento, 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 alterao de cdigo.

Para tudo existe uma soluo!


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 mtodo chamado FetchObject que retorna um objeto cujos atributos so os prprios 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 maisculo. Ento vamos ver como fica o cdigo: $obj = $rs->FetchObject(); echo $obj->CAMPO1; Dentro de um lao usamos da seguinte forma: $while (! $rs->EOF) { $obj = $rs->FetchObject(); echo $obj->CAMPO1; $rs->movenext(); }

Concluindo
Fica fcil notar o quanto utilizar uma biblioteca como essa, alm da excelente portabilidade, pode agilizar o desenvolvimento de uma aplicao. A ADODB um must-have em qualquer site ou sistema desenvolvido em PHP. Consultando o manual da biblioteca possvel expandir ainda mais o leque de recursos que ela proporciona. No deixe de conferir!

Você também pode gostar