Ejemplo de conexión con base de datos Access en PHP

20 de diciembre de 2006
Valoración del artículo:
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().

Compartir en redes sociales

Comentarios
Fueron enviados 9 comentarios al artículo
7 comentarios no revisados
2 comentarios revisados:
ASUNTO IMPORTANTE DE SINTAXIS SQL EN PHP
08/5/2011
Hola, estoy comenzando a trabajar con bases de datos access en php,ya me logro conectar a la base pero algo que me ha quebrado la cabeza por mas de 2 meses es PORQUE las sentencias sql por ODBC no aceptan la cláusula "where" de ningún modo
$numcuenta=$_GET['numcuenta'];
echo $numcuenta;
$conn_access=odbc_connect("vanco","admin","acces")or die ("error EN LA CONEXION");
$ssql="select * from estadodecuenta ";
$ssql.="where ncta='$numcuenta' ";
$ejecutar= odbc_exec ($conn_access, $ssql)or die ("error en la sentencia");

el error que me manda dice
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1., SQL state 07001?O
pero si omito mi condición where, me muestra todo sin problemas
espero alguien pueda ayudarme
saludos

jah87
Coonsultas con sentencia like
23/6/2012
Bueno, aunque ha pasado algo de tiempo respecto a tu pregunta, he hecho algunas pruebas y finalmente encontré solucion a tu problema.
Con esta sentencia puedes resolver tu problema.
$nom = "Eli";
$sql = "select * from cursistas where nombre_apellidos like '%".$nom."%'";
$rs = odbc_exec($db, $sql) or die ("No se pudo realizar la consulta");
while($row = odbc_fetch_object($rs))
{
//echo $row["nombre_apellidos"];
echo $row -> nombre_apellidos;
echo "<br>";
}

Manuales relacionados
Categorias relacionadas
El autor
Miguel Angel Alvarez
Director de DesarrolloWeb.com
http://www.desarrolloweb.com


Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...