Maestros del Web


Estás en Inicio / Editorial / PHP

12.04.2007

ODBC y PHP en 7 pasos

ODBC que es un estándar de acceso a Bases de Datos desarrollado por Microsoft Corporation, el objetivo de ODBC es hacer posible el acceder a cualquier dato de cualquier aplicación, sin importar qué sistema gestor de bases de datos almacene dichos datos.

Las siglas ODBC significan en inglés Open DataBase Connectivity en español se denomina como Conectividad Abierta de Bases de Datos la cual se logra al insertar una capa intermedia llamada manejador de Bases de Datos, entre la aplicación y el DBMS. El propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda.

Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles con ODBC, esto significa que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. desde la versión 2.0 el estándar soporta SAG y SQL.

Cómo utilizar ODBC con PHP

En algunas ocasiones se nos presentan diferentes problemas a solucionar, como el de desarrollar una aplicación con la cual podamos conectarnos a diferentes bases de datos como: Access, dBase, entre otras. Una forma de resolver este problema es usando ODBC.

En el siguiente ejemplo agregaremos un DSN dentro del ODBC para realizar la conexión a una base de datos en Access:

Paso 1:

Iniciamos abriendo nuestro ODBC Data Source Administrator, luego nos situamos en la pestaña System DSN.
odbc1.jpg

Paso 2:

Posicionados en la petaña System DSN agregaremos uno nuevo, seleccionando el botón Add/Agregar.
odbc2.jpg

Paso 3:

En este caso seleccionamos el Driver de Microsoft Access (*.mdb) y damos clic en el botón Finish/Finalizar.
odbc3.jpg

Paso 4:

Introducimos el Data Source Name tomando en cuenta que este nombre llamará a nuestro DSN creado en ODBC. En este ejempo se llamará: prueba. La descripción (opcional). Luego damos clic en el botón Select/Seleccionar donde buscaremos nuestra base de datos, en el ejemplo db.mbd y seleccionemos el botón OK.
odbc4.jpg

Paso 5:

Luego de seleccionar nuestra base de datos, con todos los datos correctos, seleccionamos el botón OK.
odbc5.jpg

Paso 6:

A continuación vemos que se ha agregado nuestro DSN, con nombre prueba y el Driver Driver do Miscrosoft Access (*.mdb). Ahora seleccionemos el botón OK.
odbc6.jpg

Paso 7:

Una vez creado nuestro DSN en el ODBC, veremos el siguiente código PHP el cual nos permitirá conectarnos a nuestro ODBC y realizar consultas a la base de datos.

<?
$dsn = "prueba";
//debe ser de sistema no de usuario
$usuario = "";
$clave="";

//realizamos la conexion mediante odbc
$cid=odbc_connect($dsn, $usuario, $clave);

if (!$cid){
	exit("<strong>Ya ocurrido un error tratando de conectarse con el origen de datos.</strong>");
}	

// consulta SQL a nuestra tabla "usuarios" que se encuentra en la base de datos "db.mdb"
$sql="Select * from usuarios";

// generamos la tabla mediante odbc_result_all(); utilizando borde 1
$result=odbc_exec($cid,$sql)or die(exit("Error en odbc_exec"));
print odbc_result_all($result,"border=1");
?>

Mediante este código en PHP lograremos realizar la consulta a la base de datos, en nuestro caso nos mostrará los datos guardados en la tabla usuarios la cual contiene 4 campos Idusuarios – Nombre – Pais - Edad y cuenta con 5 registros de ejemplo.

Esto también nos ayudará a la hora de usar otros tipos de bases de datos, soló necesitaremos modificar el driver que utilizaremos en nuestro ODBC, sin necesidad de cambiar nuestro código en PHP.

Espero les haya servido este pequeño tutorial de 7 pasos para que puedan utilizar ODBC con PHP. Los invito a quedescarguen el ejemplo.

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (13 votos, promedio: 4.62 de 5)
Loading ... Loading ...
Damián Pérez Valdés

Sobre el autor

Damián Pérez Valdés
Webmaster, Administrador de Sistemas, con experiencia en desarrollo web y de aplicaciones.

Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.

Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?

Comentarios

60 comentarios en total.

  1. djwarez 12.04.2007 - 13:25 - #

    wow.. suena muy interesante, voltea pies arriba todo lo que esta ahora

  2. cvander 12.04.2007 - 15:31 - #

    Muy útil tutorial. En ocasiones me ha tocado ir al ODBC para conectar bases de datos que ya se tenían previamente en access para demostrar las facilidades de manejarlas desde PHP.

    Aunque siempre es recomendable que si van a trabajar con PHP se animen a montar también aparte del apache, un servidorcito mysql local ;)

  3. Manuel 13.04.2007 - 10:03 - #

    Una preguntota, ya hecho conexiones odbc a access desde php y funcionan bien, pero estoy trabajando en un servidor local, si creo uuna conexion odbc del tipo usuario que es un archivo que puede uno llevar a otro equipo puedo subir ese archivo a un servidor remoto?, es decir lo que yo quiero es tener en mi servidor remoto una base de access y que php la use, pero como solo accedo a mi servidor via ftp pues no tengo ni idea de cual es la ruta real, además de que la conexion odbc requiere un path tipo windows, ya saben el “c:\algunaruta” y eso en los servidores linux no existe, alguna alternativa?.

  4. Damian 13.04.2007 - 12:48 - #

    odbc tambien esta en linux. claro, a la hora de crear un dsn cambia la ruta de la base de datos, en su caso seria algo similar a: “/var/www/misitio/”

  5. Gildus 14.04.2007 - 11:56 - #

    Es buen dato esto del ODBC para quienes programen en Windows, OJO Windows, por eso me gusta mucho el PHP, todo se puede.

    ;)

    Saludos
    Gildus

  6. Manuel 16.04.2007 - 16:55 - #

    ok gracias, lo voy a probar entonces

  7. Julian velazquez Zapata 16.04.2007 - 17:04 - #

    el comentario de loz 7 pazoz ezta muy bien pero me fallo, no zepe dedonde zalia el codigo PHP que no iva a permitir conectarnos a nuestro ODBC.

    no ze zi tengan loz pazoz para REALIZAR la coneccion con MySQL, en access no pude pero lo seguire intentando.

    SALUDOZ y que buen comentario.

    a qui les dejo el correo de una buena amiga: corazon_golden07@hotmail.com

    otra maz: arely_chavez10@hotmail.com

  8. Elizabeth Barajas Aguilar 18.04.2007 - 08:56 - #

    Hola Damian, el código me produce un error. Solo me muestra lo siguiente:

    Ya ocurrido un error tratando de conectarse con el origen de datos.”); } // consulta SQL a nuestra tabla “usuarios” que se encuentra en la base de datos “db.mdb” $sql=”Select * from usuarios”; // generamos la tabla mediante odbc_result_all(); utilizando borde 1 $result=odbc_exec($cid,$sql)or die(exit(”Error en odbc_exec”)); print odbc_result_all($result,”border=1″); ?>

    Realice los pasos exactamente como están en el manua. ¿Cómo puedo corregir este error?

    Gracias…

  9. Damian 18.04.2007 - 16:54 - #

    Hola Elizabeth:
    Debes revisar la configuracion del DSN, debes tener en cuenta que el nombre que asignes en Data Source Name debe ser el mismo que pongas en la configuracion del archivo PHP, “PASO 4″, para ser mas exactos en $dsn , ese error te da cuando no esta bien el dsn o no existe, o la base de datos tampoco existe.

    espero resuelvas, Saludos.

  10. Eduardo 16.05.2007 - 11:09 - #

    Hola, Damian: ¿Me podrias ayudar a relacionar VB6 mediante ODBC con base de datos creada con Access 2000? Desde ya, muchas gracias. Tu ayuda nos sirve mucho.

  11. MaS4Cr3 17.05.2007 - 04:04 - #

    Hola, alguno me podria decir si los ODBC de Adaptive Server Anywhere de Sybase son compatibles con PHP ?? para poder hacer esto de lo de OBDC, y si sabes de donde me puedo bajar los instaladores de las ODBC de sybase 6.0 os lo agradeceria

  12. Damian 17.05.2007 - 14:54 - #

    MaS4Cr3, Adaptive Server Anywhere de Sybase es compatible con diferentes sistemas operativos y lenguajes en los que encontramos el PHP.

  13. pablo 22.05.2007 - 14:05 - #

    estuve probando y anda bárbaro local, lo que no puedo es cuando hago un DSN que apunte a una unidad de red, p.ej. G:\ruta\base.mdb.
    Alguna idea?
    GRACIAS

  14. Damian 24.05.2007 - 07:09 - #

    pablo, si deseas utilizar una base de datos remota, puedes configurar el ODBC en donde se encuentre la base de datos.

  15. Rafael Ramírez Pacheco 01.06.2007 - 22:51 - #

    los felicito excelente aporte, lo probé y funciona de maravilla, pero tengo una pregunta como anda el asunto de la seguridad si utilizo apache+php y conexion a odbc

  16. Damian 02.06.2007 - 07:11 - #

    Rafael, ODBC tiene seguridad, a el te conectarias usando la clave del sistema. Tambien deberias configurarlo en tu fichero PHP de conexion.

  17. Elias 11.06.2007 - 08:59 - #

    hola a todos, tengo un problema con ODBC. Vereis, tengo instalada una versión de XAMPP en mi máquina local. Desde ella abro una conexión ODBC a una base de datos en Access y no tengo ningún problema. Sin embargo, hago lo mismo en un sistema LAMPP sobre Linux en el servidor y me da problemas la función odbc_connect(). Me dice que no existe. ¿Alguien sabe a que se puede deber? Otra duda que tengo es la siguiente, cómo accedo a una base de datos que está en un equipo local con Windows desde el servidor que está en Linux; es decir, cómo le indico la ruta del fichero .mdb.
    Muchas gracias.
    Un saludo

  18. Damian A. Perez Valdes 11.06.2007 - 10:03 - #

    Hola Elias, en linux debes verificar en el fichero de configuracion de PHP si los modulos de ODBC estan activados.
    El odbc debe funcionar desde un equipo ubicado en tu red con solo proporcionar el nombre del sistema DSN que agregaste en windows.
    Saludos

  19. Elias 12.06.2007 - 02:24 - #

    Gracias Damian, ya me he instalado el módulo iODBC para php. Ahora el problema que tengo es que no se cómo crear la cadena de conexión ni que driver usar para conectarme a la base de datos que tengo en Access. ¿Sabes cómo puedo realizar esto?

    Muchas gracias

  20. marcela 12.06.2007 - 16:04 - #

    hola: tengo una consulta super grande que hacerle,ojala me pueda ayudar. Mi consulta es como puedo conectarme desde mi equipo local al servidor donde estoy trabajando en una aplicacion web con php necesito conectarme a bases de datos en access. el servidor web tiene LINUX y me han dicho que no se puede hacer una coneccion ODBC desde windows a linux. POR FAVOR ES UEGENTE ¡AYUDA!!!!!
    MARCELA

  21. JAMP 21.06.2007 - 07:16 - #

    He probado en local la conexión ODBC y va bien, lo que no puedo es cuando hago un DSN que apunte a una unidad de red. Comentaste que puedes configurar el ODBC en donde se encuentre la base de datos pero, ¿como hago alusión en PHP a la conexión remota?
    Gracias por anticipado

  22. Damian A. Perez Valdes 21.06.2007 - 09:30 - #

    JAMP, como bien dices, en muchas ocasiones la conexion remota a una base de datos con ODBC da problemas. Pero te es muy necesario utilizar tu base de datos remota ? No puedes tenerla local y quizas luego, programar alguna tarea que te suba la base de datos a una unidad de red remota ???

  23. JAMP 22.06.2007 - 00:09 - #

    La situación es que mi jefe tiene implantado un sistema de control de acceso con tarjetas basado en access en un servidor win2000, y un sistema de reserva de aulas basado en mysql en otro servidor linux. Quiere que yo los enlace, haciendo que al hacerse una reserva, automáticamente se actualice la base de access, dado así acceso a las tarjetas.
    ¿lo tengo crudo?

  24. Damian A. Perez Valdes 22.06.2007 - 16:08 - #

    JAMP, Son tan grandes estas bases de datos que no pueden estar en un mismo servidor y ahorrarte el tener que conectarte a una unidad remota ?

  25. Walter L.Z 02.07.2007 - 07:46 - #

    Muy buena guia, esto me ha servido recordar que tambien es posible crear aplicaciones con PHP y un manejador de base de datos como Access,,,Gracias Damian P.

  26. LEJOS 10.07.2007 - 08:13 - #

    Buenos dias! Primero y principal muy buena la guia, siempre es util encontrar estos tipos de recursos en la web. Segundo debo hacer una consulta: estoy programando bajo php y necesito hacer la conexion desde linux a una base remota de access en windows y no encuentro el driver para poder abrir esta base. ¿Alguna idea de donde lo puedo conseguir? U otra manera de lograr la conexion?.
    Muchas gracias.

  27. salvador 19.07.2007 - 16:33 - #

    Hola, tengo un problema con el odbc cuando quiero acceder de manera remota, cuando hago referencia de manera local funciona muy bien, pero en el caso remoto me marca un error, el problema es que no puedo estar haciendo un respaldo de la base de datos remota cada día para trabajarla localmente, además de que necesito los datos que se generan al momento. ¿Qué puedo hacer? De antemano gracias.

  28. Dolores 02.08.2007 - 06:13 - #

    Primero que nada, gracias. He estado dale que te pego toda la mañana con odbc y y mis .mdb y me daba error. Con este sencillo ejemplo he podido abrir access. Ahora pretendo pasar unas tablas de access a Mysql. Sé que hay convertidores pero creo que voy a crear un php que me lea lo que quiero de access y me genere tabla en Mysql. Es la primera vez que lo hago, ¿teneis una idea mejor?. Saludos

  29. Zugazua Roberto 30.08.2007 - 06:58 - #

    Excelente lo que nos has ofrecido, una pregunta yo quiero levantar y modificar los datos de un sistema que esta en red que utiliza sql y del cual yo no soy propietario, puedo modificarlo con mi odbc????

  30. Patricia 06.09.2007 - 08:19 - #

    Hola Damian

    Estoy iniciando en esto de php, me parece muy buenos tus aportes, me alegro que hallan personas como tu que brinden su ayuda sin nada a cambio.

    Felicidades

    Patricia

  31. Israel Darío 20.09.2007 - 18:00 - #

    mmh muy interesante pero quisiera saber donde consigo drivers ODBC para una base de datos en Sybase Adaptive Server Enterprise, el windows normal no lo trae y en la pagina oficial de Sybase no viene nada al respecto… Espero puedan ayudarme

  32. Fernando Rueda 27.09.2007 - 09:53 - #

    Yo he trabajo con ODBC y me parece muy eficiente, pero llevo varios dias taratando de hacer un paginador de resultados, pero no logro que funcione, sera que me prodian ayudar….
    mi mail es: ferdinandrueda@hotmail.com.

    Muchas gracias….Frueda

  33. Cesar De La Hoz 28.09.2007 - 08:33 - #

    bueno hice todo lo que esta aqui en el tutorial pero me sale un error al momento de conectarme con la base de datos me gustaria que me ayudaras con eso el error es el siguiente:

    Warning: odbc_connect() [function.odbc-connect]: SQL error: , SQL state 00000 in SQLConnect in C:\AppServ\www\proyect\login.php on line 8
    Ya ocurrido un error tratando de conectarse con el origen de datos.

  34. Cesar De La Hoz 28.09.2007 - 08:35 - #

    te dejo mi correo para q me ayudes te lo agradezco king_deivi@hotmail.com

  35. fulana 28.09.2007 - 12:53 - #

    que pio es esto????????

  36. MALY 28.09.2007 - 14:17 - #

    la conexion eN odbc es muy util para los estudiantes del CTA..
    Como hacer una conexiòn

  37. Damian A. Perez Valdes 06.10.2007 - 07:26 - #

    Hola Isael, Intenta utilizar el Microsoft OLE DB Provider for ODBC, para que puedas conectarte a tu base de datos Sybase

  38. Dilia 10.10.2007 - 09:08 - #

    hola me parece muy interesante, pero me podrias hacer el favor de especificarme un poco mas como hago para abrir la petaña System DSN

  39. Damian A. Perez Valdes 10.10.2007 - 13:33 - #

    Dilia, el administrador de ODBC se encuentra en windows dentro de las Herramientas Administrativas en el panel de control.

  40. Leire 18.10.2007 - 02:11 - #

    Hola Damian, lo primero felicitarte por la guia, me ha servido de gran ayuda. Pero tengo un pequeño problema. En local me funciona bien, pero debo instalar mi aplicación en un servidor, mientras tengo la bd de access en un equipo local. Esto me da el siguiente fallo: Not a valid password., SQL state 42000 in SQLConnect. Naturalmente, tengo la bd en una carpeta compartida. Qué puedo hacer?

  41. felipe olivares 26.10.2007 - 17:17 - #

    SALUDOS, TENGO UNA BASE DE DATOS EN ACCESS, LLAMADA SOPORTE, EN UN DIRECTORIO DB, EN UN HOUSITNG EN INTERNET, Y NO JALA EL ODBC, LOCAL FUNCIONA PERFECTO, ME PUEDEN AYUDAR…, COMO SE CONFIGURA EL ODBC EN ACCESS, PARA PHP EN INTERNET, GRACIAS

  42. felipe olivares 26.10.2007 - 17:24 - #

    SALUDOS, DEJO MIS DATOS, PARA QUIEN PUEDA AYUDAREM
    felipe_olivares@hotmail.com

    ESTE ES EL CODIGO QUE USO, LOCALMENTE Y FUNCIONA, PERO AL SUBIRLO AL HOUSING EN INTER, NO FUNCIONA Y ME MARCA ERROR DE ODBC, GRACIAS

    QUE TENGAN BUEN DIA

  43. Alejandro 01.11.2007 - 05:44 - #

    Hola amigos, estoy tratando de conectarme via ODBC a un servidor Oracle que esta instalado en otra maquina, probé con dos versiones de PHP la 4(appserv) y la 5(wamp) y tambien configure le oracle instantcliente 10, y no puedo conectarme de ninguna manera, también intente con OCI8 y nada, lo unico que logre fue con ORA pero como esta quedando descontinuado no me convence

    porfavor, si alguien me puede ayudar estaría muy agradecido

  44. Antonio 22.11.2007 - 22:58 - #

    Al código le falta un “php”

    <?php
    $dsn = “prueba”;
    //debe ser de sistema no de usuario
    $usuario = “”;
    $clave=”";

    //realizamos la conexion mediante odbc
    $cid=odbc_connect($dsn, $usuario, $clave);

    if (!$cid){
    exit(”Ya ocurrido un error tratando de conectarse con el origen de datos.“);
    }

    // consulta SQL a nuestra tabla “usuarios” que se encuentra en la base de datos “db.mdb”
    $sql=”Select * from usuarios”;

    // generamos la tabla mediante odbc_result_all(); utilizando borde 1
    $result=odbc_exec($cid,$sql)or die(exit(”Error en odbc_exec”));
    print odbc_result_all($result,”border=1″);
    ?>

  45. janm 12.12.2007 - 15:30 - #

    Necesito conectar de un LAMP a tablas dbf en windows, lo hago con iODBC ….? como? y con “driver”… alguien sabe?

  46. Patricio Diaz 18.12.2007 - 07:03 - #

    Excelente aporte a la comunidad.

    Felicitaciones Damian…

  47. josep 28.12.2007 - 06:44 - #

    después de mucho buscar, he conseguido visualitzar mis tablas de access… supongo que migraré a mysql !
    moltes gràcies des de barcelona!

  48. eddy 24.03.2008 - 08:23 - #

    Hola a todos, necesito conectar dos Bases de datos remotamente que estan en fox pro9, solo he podido conectar una base de datos con un “dsn” no se si puede conectar en el mismo codigo de php, o siempre se tiene que agregar un ODBC para una nueva base de datos, desde ya muchas gracias y espero su repuesta

  49. YO 25.03.2008 - 13:03 - #

    CON ACCES CUALQUIERA LO HACE; INTENTALO CON SYBASE

  50. Rals 02.04.2008 - 01:55 - #

    ¿Y para conectarme a paradox 9.0 desde php?

    Lo intento por ODBC pero al crear el DSN de sistema, no me deja seleccionar la base de datos.

  51. zulema 02.04.2008 - 13:19 - #

    Tenes q tener el driver para poner sellecionar la base de datos que queres

  52. Rafa 10.04.2008 - 10:43 - #

    Tengo un problema utilizo el codigo este y le cambio el nombre de la tabla por uno que tengo un mi base de datos y me dice que la tabla o vista no existe. Espero Respuesta Gracias.

  53. beto 01.05.2008 - 19:05 - #

    Felicidades por tu aportacion, es exelente… tengo una duda, si quiero conectar me con php a sql server 2000 mediante odbc, el procedimiento seria el mismo?, cabe mencionar que mi servidor sql es remoto, y los dos corren sobre windows.

  54. gonzalo 18.05.2008 - 15:30 - #

    Muchas gracias Damian, es algo que estaba buscando desesperadamenta, en mi empresa con unas bases de access nos basta y queria demostrar que no hace falta cambiar todo el sistema solamente por querer consultar desde casa unos pocos datos, lo que no se aun es si se puede acceder a una consulta ya creada en access desde php. Un saludo.

  55. ricardo 21.05.2008 - 10:13 - #

    esta chido el tutorial, pero quisiera saber si no hay problemas para HOSPEDAR la base y archivo php en la WEB, y ser consultado desde cualquier lado.

  56. Johan 22.07.2008 - 23:04 - #

    Warning: odbc_connect(): SQL error: , SQL state 00000 in SQLConnect in c:\inetpub\wwwroot\mi_primer_sitio\index.php on line 7
    Error en la conexión con la base de datos

  57. Mario Ivan Ornelas Rodriguez 30.07.2008 - 14:35 - #

    Esta bueno pero como puedo generar una base de datosODBC y realizar un ejecutable en visual basic por fa se los agradeceria

  58. CAMILO 31.07.2008 - 16:42 - #

    DAMIAN INTENTO HACER CONEXION CON BASES DE DATOS EN FOX PRO
    PERO ME SACA EEROR TENGO EL MISMO ODBC SI PUEDE LE AGREDECERIA MUCHISIMO LA BASE ESTA EN RED AUNQUE EN UN PC DE PRUEBA

  59. julio 19.08.2008 - 10:05 - #

    gracias por eplica de obdc, tengo un problema el cual no puedo entrar en red con otra maquina que lleva el programa de acces y no puedo extraer el programa a mi maquina pues sale un mensaje :
    Run_tine error 4002
    S1000: (microsoft][controladorODBCmicrosoft] la operacion debe usar consulta actualizable.
    porfa si pueden ayudarme a resolver ese problema gracias

  60. Matias 12.09.2008 - 14:45 - #

    Excelente! muchas gracias me fue de mucha ayuda!!!

Deja tu Comentario


Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


Anuncios por Q
-


Maestros del Web es el punto de encuentro para los entusiastas de la red.

Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress