Por motivos de trabajo tengo que leer/escribir archivos de MS Access (*.mdb) utilizando PHP. Después de leer varios foros y documentos les dejo la solución que encontré.
Primero debemos instalar algunos software.
sudo aptitude install php5-odbc mdbtools libmdbtools libmdbodbc
Luego deben editar los siguientes archivos /etc/odbcinst.ini y /etc/odbc.ini
[MDBToolsODBC]
Description = MDB Tools ODBC drivers
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
En este archivo deben indicar el path del archivo .mdb que desen leer.
[DSS]
Description = DSS-TMP
Driver = MDBToolsODBC
Database = /home/stefano/DSS/DB.mdb
Luego para probar si la conexión esta correcta en la consola deben escribir
stefano@arda:~$ isql DSS
Y aparecerá un mensaje indicando que ya están conectados a su base de datos. Ahora sólo queda leer el archivo desde PHP para eso pueden usar el siguiente snippet.
".odbc_result($result,"TABLE_NAME");
}
?>
Amigo es posible que uno suba un archivo de access y este pueda ser leido para extraer información de 2 tablas y luego borrarlas
BuenÃsimo! muchas gracias!
Hola, no puedo acceder a los datos, la conexion esta bien, pero $result no me trae los datos. Alguna sugerencia.
Buenas, muy interesante su explicación, me funciono muy bien. Ahora, me lee una primera tabla de ACCESS, cuando trato de leer la segunda, el programa se para inesperadamente, en el comando: $resultado = odbc_exec($conn, $sql);
Yo guardo los nombres de las tablas en un arreglo y leo cada nombre en un ciclo:
for ($i = 0; $i < count($aControl); $i++) {
$sTabla = strtoupper($aControl[1]);
echo "+++++ " . $sTabla . "\n";
$sql = 'SELECT * FROM ' . $sTabla;
$resultado = odbc_exec($conn, $sql);
odbc_fetch_row($resultado, 1);
do {
$iF = 1;
$nF = odbc_num_fields($resultado);
while ($iF <= $nF) {
echo (odbc_field_name($resultado, $iF) . ": " . odbc_result($resultado, $iF) . "\n");
$iF++;
}
} while (odbc_fetch_row($resultado));
}