> Manuales > Taller de PHP

Un pequeño ejemplo para mostrar el modo de conectar de una base de datos Access con PHP por medio de ODBC.

PHP dispone de diversos juegos de funciones para conectar con distintos tipos de bases de datos. Por ejemplo, existe un juego de funciones específico para MySQL, otro para Oracle, PostgreSQL, etc. Aunque no existe entre sus librerías ninguna función para acceder específicamente a una base de datos Access. Para ello, disponemos de las funciones de conexión ODBC con bases de datos.

ODBC es un estándar de conexión con bases de datos que utilizan los sistemas Windows. Con ODBC se puede acceder a cualquier base de datos, siempre que exista el correspondiente driver ODBC para esa base de datos. Las conexiones ODBC son propias de sistemas Microsoft, por lo que podremos utilizarlas desde cualquier lenguaje de programación en Windows, como PHP, para acceder a cualquier base de datos, incluida Access.

Lo primero que tendremos que hacer para conectar con PHP es crear un DSN en nuestro ordenador. Un DSN es un nombre de conexión que utilizaremos para referenciar a una base de datos. Podemos tener tantos DSN en nuestro sistema como necesitemos, para acceder desde aplicaciones o lenguajes de programación a bases de datos por ODBC. Esto lo hacemos desde el panel de control de Windows en la opción "Herramientas administrativas - Origenes de datos ODBC". Tenemos que crear un DNS de sistema o de usuario, en la solapa correspondiente y luego apretando agregar. Habrá que seleccionar el driver ODBC que tenemos que utilizar, como se trata de una base de datos de Access, debemos seleccionar el driver ODBC de Access. Luego habrá que darle un nombre al DSN y seleccionar el archivo .mdb que contiene nuestra base de datos. Una vez realizado esto, necesitaremos acordarnos del nombre del DSN que hemos creado, porque lo tendremos que utilizar en nuestro código de conexión.

Referencia: Se explica como crear un DSN con más detalle en el artículo Pasos previos II: Conexión a BD. Es un capítulo del manual de ASP, pero se hace igual para conectar Access con PHP.

Si tenemos nuestra página alojada en un proveedor de hosting y queremos conectar Access con PHP, si es que lo permiten (pues lo típico en esos casos es utilizar una base de datos MySQL), tendríamos que preguntarles cómo crear el DSN en sus sistemas.

Una vez tengamos el DSN utilizaremos un código de conexión como este:

$conn_access = odbc_connect ("guiarte_access", "", "");

Con la función odbc_connect() se conecta con una base de datos por ODBC, indicando el nombre del DSN en el primer parámetro y luego el usuario y la contraseña. En Access normal es que no se tenga siquiera usuario y contraseña, por lo que esos dos parámetros los he pasado con una cadena vacía. Nos devuelve el identificador de la conexión con la base de datos.

Para ejecutar una sentencia SQL utilizaremos la función odbc_exec(). De este modo:

$rs_access = odbc_exec ($conn_access, "select * from tabla");

Como se puede ver, odbc_exec() recibe el identificador de la conexión obtenido anteriormente y la sentencia SQL a ejecutar. Devuelve un identificador del conjunto de registros resultado de ejecutar la sentencia.

Luego utilizaremos funciones como odbc_fetch_array() o odbc_fetch_object() para acceder a cada uno de los registros obtenidos en el conjunto de resultados.

Un código completo de conexión con una base de datos Access podría ser el siguiente:

if ($conn_access = odbc_connect ( "guiarte_access", "", "")){
    echo "Conectado correctamente";
    $ssql = "select * from libros";
    if($rs_access = odbc_exec ($conn_access, $ssql)){
       echo "La sentencia se ejecutó correctamente";
       while ($fila = odbc_fetch_object($rs_access)){
          echo "<br>" . $fila->titulo;
       }
    }else{
       echo "Error al ejecutar la sentencia SQL";
    }
} else{
    echo "Error en la conexión con la base de datos";
}

Nota: Las funciones odbc_fetch_array() y odbc_fetch_object(), así como otras funciones de PHP para el acceso por ODBC a bases de datos, son idénticas o muy similares en su utilización a las funciones propias para otras bases de datos como MySQL. En nuestros manuales y talleres de PHP tenemos muchos ejemplos de conexión y trabajo con bases de datos MySQL, que nos pueden servir de guía para aprender a trabajar con bases de datos Access. Simplemente habría que tener el DSN para la conexión con la base de datos Access y cambiar los nombres de las funciones como mysql_fetch_array() por sus correspondientes, como odbc_fetch_array().

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual