ADOdb é uma biblioteca de abstração de banco de dados para PHP e Python baseado no mesmo conceito como da Microsoft ActiveX Data Objects . Ele permite aos desenvolvedores escrever aplicações de uma forma bastante consistente, independentemente do sistema de banco de dados subjacente e armazenar as informações. A vantagem é que o sistema de banco de dados podem ser alterados sem re-escrever toda chamada para ele na aplicação.
Fonte: Wikipédia
ADOdb - Tutorial MYSQL
PHP foi criado especialmente para a criação de web sites dinâmicos. Para criar estes sites normalmente se utiliza algum tipo de base de dados(banco de dados) desde onde obteremos a informação que queremos mostrar. Isso ja são noticias, perguntas e respostas de um forum de outro tipo de informacão dinâmica. Se usamos php normalmente usaremos MySQL como banco de dados para iniciar nosso site, o problema aparece quando nosso projeto cresce tanto que necessita fazer uso de um outro banco de dados mais robusto .
Infelizmente o acesso em PHP de cada banco de dados é muito diferente. Para conectarmos ao mysql, deveremos usar o mysql_connect(); quando você decide mudar para um Oracle o Microsoft SQL Server, deve usar ocilogon() o mssql_connect() respectivamente. ele piora também os parâmetros de cada função diferente.
Infelizmente o acesso em PHP de cada banco de dados é muito diferente. Para conectarmos ao mysql, deveremos usar o mysql_connect(); quando você decide mudar para um Oracle o Microsoft SQL Server, deve usar ocilogon() o mssql_connect() respectivamente. ele piora também os parâmetros de cada função diferente.
Uma biblioteca de abstração de dados como ADODB é o que você precisa se você quiser garantir grandemente a portabilidade de sua aplicação. Ele fornece um conjunto de funções comuns para se comunicar com bancos de dados diferentes.
ADODB vem de " Active Data Objects DataBase" (não muito original mas eficaz). ADODB atualmente suporta MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL Server, Access, FoxPro, Sybase, ODBC y ADO. Você pode obter ele em: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Fonte: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Exemplo de MySQL
O Banco de dados usado com mais frequência em PHP é o MySQL, Então é possivel que Vocês ja estarão familiarizados com o seguinte código. Conectamos todo o server MySQL em localhost, o banco de dados é "mydb", e executaremos uma sequência SQL. O resultado é impresso na tela, uma linha por cada linha obtida.
Código PHP:
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($result === false) die("failed");
while ($fields = mysql_fetch_row($result)) {
for ($i=0, $max=sizeof($fields); $i < $max; $i++) {
print $fields[$i].' ';
}
print "<br>n";
}
O código acima está colorido por sessão. a primeira sessão é a sessão do banco de dados. A segunda sessão é a execução da sentença SQL, e a última é a impressão do resultado. O loop while recolhe linhas até o final.
Aqui o que é Necessário fazer no ADODB
Código PHP:
include("adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect("localhost", "root", "password", "mydb");
$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
print $result->fields[$i].' ';
$result->MoveNext();
print "<br>n";
}
Agora mudar para Oracle é tão simples como mudar a segunda linha do NewADOConnection('oracle'). Vamos a ver cada parte do código.
Conectando ao Banco de Dados
Código PHP:
include("adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect("localhost", "root", "password", "mydb");
A conexão pode parecer algo mais complicado do em MySQL mas explico que o ADODB é totalmente orientado a objetos. Se Você não está familiarizado com a programacão orientada a objetos não se preocupe porque todo o segredo está na funcão NewADOConnection() .
Para salvar memoria apenas se carrega as funções específicas do banco de dados que vamos utilizar. Cada driver contem um arquivo distinto que se carrega mediante a um include automáticamente.
Uma vez em que foi carregado o driver que vamos a utilizar mediante a função NewADOConnection() nós conectamos ao la banco de dados usando $db->Connect().
Para salvar memoria apenas se carrega as funções específicas do banco de dados que vamos utilizar. Cada driver contem um arquivo distinto que se carrega mediante a um include automáticamente.
Uma vez em que foi carregado o driver que vamos a utilizar mediante a função NewADOConnection() nós conectamos ao la banco de dados usando $db->Connect().
Executando SQL
Código PHP:
$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");
Para enviar uma sequência sql ao motor de banco de dados se utiliza a funcão Execute(). Esta funcão devolve um objeto "recordset" se a execução foi correta a um "false" se haver algum erro.
Existem dois principais objetos no ADODB. O objeto de conexão e objeto de registros. Quando usar cada um?
O objeto de conexão ($ db) é responsável pela conexão com o banco de dados e formatação de consultas SQL para o servidor. O objeto recordset ($ result) é responsável pela obtenção dos resultados e formatação dos resultados.
Existem dois principais objetos no ADODB. O objeto de conexão e objeto de registros. Quando usar cada um?
O objeto de conexão ($ db) é responsável pela conexão com o banco de dados e formatação de consultas SQL para o servidor. O objeto recordset ($ result) é responsável pela obtenção dos resultados e formatação dos resultados.
Recuperando dados
Código PHP:
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
print $result->fields[$i].' ';
$result->MoveNext();
print "<br>n";
}
O processo de obtenção e processamento de dados é lido de um arquivo. Para cada linha observamos se vemos ligação ao final do fichero (EOF).Até chegar ao final do arquivo lemos e movemos para a próxima linha (MoveNext).
O array $result->fields[] é gerado pelo ADODB antes cada pedido do movenext(). Podemos obter o array associativos ao indexados pelo número do campo.
O array $result->fields[] é gerado pelo ADODB antes cada pedido do movenext(). Podemos obter o array associativos ao indexados pelo número do campo.
Código PHP:
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs1 = $db->Execute('select * from table');
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs2 = $db->Execute('select * from table');
print_r($rs1->fields); // muestra array([0]=>'v0',[1] =>'v1')
print_r($rs2->fields); // muestra array(['col1']=>'v0',['col2'] =>'v1')
Como se ve no exemplo,Eu usei dois recorsets diferentes métodos para armazenar dados recuperados a partir da consulta usando $ ADODB_FETCH_MODE ($ ADODB_FETCH_MODE mudança deve ser antes do Execute ()).
ADOConnection
O objeto que realiza a conexão com o banco de dados, executa as declarações SQL e também outro conjunto de funcões para uniformizar o formato de sentencias SQL como a concatenação de cadeias no formatos de datas.
Outras funções especiais
$recordset->Move($pos) move o recordset a uma linha em particular. ADODB suporta o avanço de linhas em todos banco de dados. Alguns banco de dados não suportam retrocesso no recordset. Você Pode de todas maneiras simular este comportamento usando um cache.
$recordset->RecordCount() retorna o total de linhas obtidas no recordset. Alguns banco de dados não suportam isso e devolvem un -1.
$recordset->GetArray() coloca o resultado do recordset em um array.
rs2html($recordset) esta fução gera una tabela HTML com o resultado do recordset.
Mais funcões úteis podem ser encontradas em Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
$recordset->RecordCount() retorna o total de linhas obtidas no recordset. Alguns banco de dados não suportam isso e devolvem un -1.
$recordset->GetArray() coloca o resultado do recordset em um array.
rs2html($recordset) esta fução gera una tabela HTML com o resultado do recordset.
Código PHP:
include('adodb.inc.php');
include('tohtml.inc.php'); /* includes the rs2html function */
$conn = &ADONewConnection('mysql');
$conn->PConnect('localhost','userid','password','database');
$rs = $conn->Execute('select * from table');
rs2html($rs); /* recordset to html table */
tópicos avançados
e inserção de Updates
Imagine que temos os seguintes bancos para guardar em um banco de dados.
Código PHP:
ID = 3
TheDate=mktime(0,0,0,8,31,2001) /* 31st August 2001 */
Note= sugar why don't we call it off
Quando alterar de banco de dados esse formato de dados pode não funcionar.
O primeiro problema é que cada banco de dados usa as datas em um formato distinto. . MySQL espera YYYY-MM-DD como formato, outros banco de dados requerem outros formatos. O ADODB tem uma funcão que pode nos ajudar DBDate() que converte uma data em formato correto para realizar updates e inserts.
A única citação campo Note marca é também um problema. Qstr function () pode nos ajudar nisso.
Então como usamos essas funções?
O primeiro problema é que cada banco de dados usa as datas em um formato distinto. . MySQL espera YYYY-MM-DD como formato, outros banco de dados requerem outros formatos. O ADODB tem uma funcão que pode nos ajudar DBDate() que converte uma data em formato correto para realizar updates e inserts.
A única citação campo Note marca é também um problema. Qstr function () pode nos ajudar nisso.
Então como usamos essas funções?
Código PHP:
$sql = "INSERT INTO table (id, thedate,note) values ("
. $ID . ','
. $db->DBDate($TheDate) .','
. $db->qstr($Note).")";
$db->Execute($sql);
ADODB tem também duas funções que ajudam a reconhecer se um insert update e delete tem sido corretos.
$connection->Affected_Rows() (devolve o total de linhas afetadas por um insert o um delete ) y $recordset->Insert_ID() (devolve o último valor gerado por um campo autoincrement e um insert). Nem todos os bases de banco de dados suportam estas funções (veja a documentacão).
$connection->Affected_Rows() (devolve o total de linhas afetadas por um insert o um delete ) y $recordset->Insert_ID() (devolve o último valor gerado por um campo autoincrement e um insert). Nem todos os bases de banco de dados suportam estas funções (veja a documentacão).
MetaTypes
Existem funções para recuperar informações de cada campo, o método FetchField($fieldoffset). Isso devolve um objeto com três propriedades name, type y max_length. Si max_length es desconocido o no se puede obtener es = a -1.
Por exemplo.
Por exemplo.
Código PHP:
$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
$f0->name contiene 'adata', $f0->type contiene 'date'.
Cada banco de dados define suas colunas de una manera particular, O ADODB tem uma função especial para uniformizar os tipos de dados, MetaType($type, $max_length).
C: character and varchar types
X: text or long character (eg. more than 255 bytes wide).
B: blob or binary image
D: date
T: timestamp
L: logical (boolean)
I: integer
N: numeric (float, double, money)
Um exemplo sobre o que foi dito acima
/
Código PHP:
$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
$type = $recordset->MetaType($f0->type, $f0->max_length);
print $type; /* debe imprimir 'D' por fecha*
Limites de seleção em um SQL
O ADODB tem uma função que assegura a portabilidade de uma sql em um tema de limites de unm recordset, $connection->SelectLimit($sql,$nrows,$offset), em caso de os produtos Microsoft se usará SELECT TOP, em mysql, postgresql se usará LIMIT e em outros bancos de dados que não o suportem se emula.
Cache de consulta
O ADODB permite "cachear" os resultados das consultas SQL em função de um tempo definido. As consultas devem então realizar conexões connection->CacheExecute($secs2cache,$sql) y $connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset) . n.trad. Los resultados se almacenan en un directorio que debe tener los permisos apropiados.
Suporte a sessão PHP4
[LEFT]O ADODB suporta sessões PHP. Pode guardar variaves de sessões em um banco de dados para assegurar a escalabilidade. Para maiss informacão visite docs-session-es.htms
Se está pensando em escrever um software comercial em PHP e deseja distribui-lo, deve considerar ADODB. Está sendo usado com exito, e, LGPL, que significa que pode ser distribuido com aplicacões comerciais, deixando o seu código propreietario.[/LEFT
Conclusão
O ADODB é o suficientemente, robusto e completo para usar em qualquer aplicação. Está sendo atualizado permanentemente e também está tendo muitos seguidores.
Com certeza ele é uma boa opção.
Com certeza ele é uma boa opção.
FONTE: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Comment