# MS Access en PHP

PHP puede acceder a información contenida en la base de datos Access, aunque parece ser que su rendimiento es inferior a otras bases de datos porque el acceso se realiza a través de una conexión ODBC.

## Crear la conexión ODBC

ODBC (Open Database Connectivity) es una API de conexión a bases de datos.

Para crear una conexión ODBC a una base de datos Access, hay que abrir el Administrador de orígenes de datos ODBC mediante el menú Inicio > Panel de control > Herramientas administrativas > Orígenes de datos (ODBC). Una vez abierto el Administrador de orígenes de datos ODBC, hay que elegir la pestaña "DSN de sistema":

En la pestaña "DSN de sistema" hay que pulsar el botón "Agregar..." y elegir el controlador "Microsoft Access Driver (*.mdb)" :

Se abrirá una ventana de configuración en la que hay que hacer clic en el botón "Seleccionar..."...

... y elegir la base de datos con la que se quiere conectar:

A continuación hay que escribir el nombre y la descripción que le queramos dar al origen de datos y hacer clic en el botón "Aceptar".

En la pestaña "DSN de sistema" aparecerá el nuevo origen de datos:

Volver al principio de la página

## Utilizar la conexión ODBC

Existen una serie de funciones ODB con una sintaxis y comportamiento similar a las funciones MYSQLI, aunque la sintaxis de las consultas debe ser la que admite MS Access.

### Conexión con MS Access

La función para conectar con la base de datos es odbc_connect($dsn, $usuario, $password), que devuelve un identificador de enlace que se utiliza en todas las consultas posteriores.

En el ejemplo siguiente, la variable $db almacena el identificador de enlace.

    <?php
    $db = odbc_connect('db1', '', '');
    if (!$db) {
        print "<p>Imposible conectarse con la base de datos.</p>";
        exit();
    }
    ?>

Si no se puede establecer la conexión con la base de datos, puede deberse a que la base de datos no esté funcionando, a que los datos de usuario no sean correctos o a que no esté activada la extensión odbc (en Windows está incluido siempre).

Volver al principio de la página

### Consultas a la base de datos

Una vez realizada la conexión a la base de datos, las operaciones se realizan a través de consultas.

La principal función para efectuar consultas es odbc_exec($db, $consulta). Dependiendo del tipo de consulta, la función devuelve un valor lógico o un recurso.

Volver al principio de la página

#### Seguridad en las consultas

Por escribir

#### Acceder al resultado de una consulta

En caso de que el resultado de una consulta sean uno o varios registros, se accede a cada uno de ellos mediante la función odbc_fetch_array($result, [, $numero_fila]).

El ejemplo siguiente muestra cómo se pueden listar todos los registros de una tabla ('db1' es el nombre de la conexión odbc, 'gente' es el nombre de la tabla y 'nombre' y 'apellidos' son campos de la tabla 'gente'):

    <?php
    $db = odbc_connect('db1','','');
    if (!$db) {
        exit('Error en la conexión a la base de datos');
    } else {
        $consulta = "SELECT * FROM gente";
        $result = odbc_exec($db,$consulta);
        if (!$result) {
            exit("Error en la consulta");
        } else {
            print "<table border=\"1\">\n  <tr>
        <th>Nombre</th>\n    <th>Apellidos</th>\n  </tr>\n";
            while ($valor = odbc_fetch_array($result)) {
                $nombre = $valor['nombre'];
                $apellidos = $valor['apellidos'];
                print "  <tr>\n    <td>$nombre</td>\n    <td>$apellidos</td>\n  </tr>\n";
            }
            odbc_close($db);
            print "</table>\n";
         }
    }
    ?>

#### Liberación de recursos

Para liberar el recurso que almacena los resultados de la una consulta se utiliza la función odbc_free_result($result).

Para cerrar la conexión con la base de datos se utiliza la función odbc_close($db).

#### Contar registros

Aunque existe una función odbc_num_rows($result) que devuelve el número de filas devueltas por una consulta, esta función no funciona con MS Access, por lo que para averiguar el número de filas es necesario realizar una consulta especial.

El ejemplo siguiente muestra cómo contar los registros de una tabla ('db1' es el nombre de la conexión odbc, 'gente' es el nombre de la tabla):

    <?php
    $db = odbc_connect('db1','','');
    if (!$db) {
        exit('Error en la conexión a la base de datos');
    } else {
        $consulta = "SELECT COUNT(*) as numero FROM gente";
        $result = odbc_exec($db, $consulta);
        if (!$result) {
            exit("Error en la consulta");
        } else {
            $valor = odbc_fetch_array($result);
            print "<p>Hay $valor[numero] personas en la agenda.</p>";
        }
    }
    ?>

Volver al principio de la página

Esta obra está bajo una licencia de Creative Commons.