segunda-feira, 27 de outubro de 2008

Usando PHP para acessar arquivos MDB do Access

Neste artigo irei explicar como acessar os banco de dados do Microsoft Access através do PHP. Para acessar os arquivos do Access será usado o componente Microsoft ActiveX Data Objects (ADO), conhecido também como oledb. Portanto este método só funcionária se o PHP estiver sendo executado no Windows.

A primeira coisa é criar o objeto COM que será usado para acessar o banco de dados.
$conexao = new COM("ADODB.Connection");
Depois é necessário invocar o método Open para abrir a conexão com o banco de dados, passando como parâmetro o texto que representa a origem do banco de dados. 
$conexao->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=meudb.mdb");
No exemplo acima, meudb.mdb é nome do arquivo MDB que estamos acessando.

Agora que o PHP está conectado ao banco de dados, para se executar uma consulta utiliza-se o método Execute que retorna um objeto Recordset.
$recordset = $conexao->Execute("select * from tabela1");
Para mostrar o resultados dessa consulta basta apenas utilizar o objeto recordset. Utiliza-se a propriedade EOF para verificar se recordset já chegou ao final e a propriedade fields para ler os campos. Ao final deve-se invocar o método MoveNext para passar para o registro seguinte.
while (!$recordset->EOF) {
echo $recordset->fields["campo1"]->value;
echo $recordset->fields["campo1"]->value;
$recordset->MoveNext();
}
Para encerrar a conexão utilize o método Close.
$conexao->Close();
Pronto! Seu banco de dados do access já pode ser acessado pelo PHP, sem a instalação de nenhum programa extra.

3 comentários:

Vinícius disse...

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft JET Database Engine
Description: Não foi possível encontrar ISAM instalável.' in C:\wd\xampp\htdocs\nf\admin\consulta_vencendo.php:3 Stack trace: #0 C:\wd\xampp\htdocs\nf\admin\consulta_vencendo.php(3): com->Open('Provider=Micros...') #1 {main} thrown in C:\wd\xampp\htdocs\nf\admin\consulta_vencendo.php on line 3

Roldão Jr disse...

Esse problema não está diretamente relacionado com o PHP mas com o Windows. Veja se você não informou a conexão corretamente. O certo é "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=meudb.mdb" (com espaço entre Data e Source).

Unknown disse...

Como posso realizar uma execução de uma linha de um modulo dentro do access apos esse acesso.