Jump to content


Photo

¿Cómo conectarse a Firebird desde PHP?


  • Please log in to reply
50 replies to this topic

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 08 November 2009 - 05:28 PM

Hola amigos, este tema lo traigo desde mi BLOG, debido a que como paso la mayor parte de mi tiempo en el foro y es un tema muy visitado también, para que no se pierda la coloco aquí :), empecemos.

En este breve tuto les enseñaré como conectar una base de datos Firebird desde PHP, como es una de las bases más populares del momento es justo también aprender a conectarse desde otro lenguaje que no sea Delphi (¿VB?, ¡Guacala!). En este tutorial vamos a tratar con un servidor local, para los que no tienen Apache y PHP y no tienen mucho conocimientos para la instalación de las mismas, pueden descargarse un pack con todo incluido e instalación automática, la cual recomiendo ampliamente XAMPP

Luego de instalar el servidor, procedemos a detener el servicio Apache antes de hacer cualquier modificación, luego localizar el archivo PHP.INI (recuerda realizar un backup de este archivo antes de.. ;)) ubicado en la carpeta C:\XAMPP, lo abrimos y buscamos la línea php_interbase.dll y le quitamos el punto y coma “;” que tiene delante y así activamos esa extensión. Lo siguiente que haremos es buscar la línea extension_dir y le cambiamos su valor a:
 

 

extension_dir="C:\xampp\php\ext"

 

Si está descomentado dejémoslo así, quiere decir viene por defecto en la instalación de XAMPP.

Y por último buscamos la línea session.save_path, Pero antes debemos verificar que exista una carpeta tmp, si no existe la creamos, luego quitamos el ";" en caso de tenerlo y cambiamos la línea así:
 

 

session.save_path="C:\xampp\tmp"

 

y eso es todo, grabamos y reiniciamos Apache y luego reiniciamos la pc para que los cambios hagan efectos con más efectividad. Luego de reiniciado la PC, procedemos a revisar si se realizaron los cambios correctamente abriendo el navegador web de su preferencia (en mi caso Firefox, ¿IE? ¡Guacala! :D ), y ponemos la dirección http://Localhost/phpinfo.php, y vas a ver la configuración completa de PHP, más abajo debe aparecer la configuración de Interbase, si les aparece pues todo está instalado correctamente.
 

interbase.jpg

Conectarse a Firebird

Ahora vamos a proceder a conectarnos a firebird desde PHP.

Código para conectar a la base:


php
  1. $conn = ibase_connect("localhost:C:\\XAMPP\\htdocs\\fdb\\MUSICA.FDB", "SYSDBA", "masterkey");
  2.  
  3. if (!$conn)
  4. {
  5. echo "Acceso Denegado!";
  6. exit;
  7. }

El anterior código creo que es bastante claro, Localhost es el host seguido de la ubicación de la base de datos, SYSDBA es el user y masterkey la contraseña.

Ahora les haré un ejemplo completo con un query y mostrar los resultados en una tabla:
 


php
  1. <?php
  2. $conn=ibase_connect("localhost:C:\\XAMPP\\htdocs\\fdb\\MUSICA.FDB", "SYSDBA", "masterkey");
  3.  
  4. if (!$conn)
  5. {
  6. echo "Acceso Denegado!";
  7. exit;
  8. }
  9.  
  10. $query = "select ARTISTA from ARTISTAS;";
  11.  
  12. $result = ibase_query($conn,$query);
  13.  
  14. if (!$result)
  15. {
  16. echo "no se puede mostrar datos desde la consulta: $query!";
  17. }
  18.  
  19. $row = ibase_fetch_object($result);
  20.  
  21. while ($row = ibase_fetch_object($result))
  22. { ?>
  23. <table width="200" border="1">
  24. <tr>
  25. <td><? echo $row->ARTISTA; ?></td>
  26. </tr>
  27. </table>
  28. <? } ?>
  29.  
  30. ?>

No duden en preguntar y dejen tus comentarios.

Saludos.


  • 0

#2 felipe

felipe

    Advanced Member

  • Administrador
  • 3283 posts
  • LocationColombia

Posted 08 November 2009 - 06:57 PM

Muy bueno amigo, felicidades y gracias (y)


Saludos!
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 08 November 2009 - 07:03 PM

Excelente, enecumene(y)

Saludos.
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 08 November 2009 - 10:53 PM

Ah vaya, que bien amigo, excelente. (y)

Salud OS
  • 0

#5 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 09 November 2009 - 07:55 AM

Gracias amigo, muy buen aporte. (y) (y)
  • 0

#6 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 08 February 2010 - 08:06 AM

buenos dias, estoy trantando de configurar php y firebird hago todo lo que dice enecumene pero en el phpinfo no me aparece nada relacionado a interbase, como si no estuviera configurado.

me pueden colaborar.

muchisimas gracias por la atencion que me puedan prestar

instale el appserv 2.6 y tengo firebird 2
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 08 February 2010 - 10:16 AM

Hola JAI_ME, haz lo siguiente:

- Detén el servicio Apache a través de Inicio-> Programas->AppServ->Control Server by Service->Stop Apache.
- Vas a la carpeta de Windows y buscas el archivo php.ini.
- Abres el archivo y buscas la línea extension=php_interbase.dll, si tiene un punto y coma por delante así: " ;extension=php_interbase.dll " lo quitas, lo grabas.
- Reinicia el servicio Apache a través del punto 1 dandole a Restart Apache o Start Apache.
- Revisa de nuevo el PHPInfo.

¡Suerte!.
  • 0

#8 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 08 February 2010 - 10:54 AM

Gracias por la pronta respuesta, si efectivamente habia hecho eso incluso reinicie el equipo y no me funciona.
que podra ser... me puedes ayudar ?

gracias
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 08 February 2010 - 10:56 AM

Gracias por la pronta respuesta, si efectivamente habia hecho eso incluso reinicie el equipo y no me funciona.
que podra ser... me puedes ayudar ?

gracias


Ah caray, pues puede ser asunto de versión de AppServ, intenta descargarte la anterior el 2.5.10 que es el que tengo.

Saludos.
  • 0

#10 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 08 February 2010 - 11:31 AM

de nuevo gracias enecumene, voy a desintalar todo y reinstalo para ver si me funciona... apenas termine todo te comento...
  • 0

#11 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 08 February 2010 - 03:03 PM

De nuevo gracias enecumene por sus sabios consejos, efectivamente no se porque extraña razon en la version de Appserv 2.6 no se puede configurar firebird, pero instale el appserver 2.5.10 y me funciono, en el info de php mustra la informacion de interbase, ahora me toca es conectarme desde php. cualquier duda los sigo molestado.

gracias (y)
  • 0

#12 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 08 February 2010 - 05:55 PM

De nuevo gracias enecumene por sus sabios consejos, efectivamente no se porque extraña razon en la version de Appserv 2.6 no se puede configurar firebird, pero instale el appserver 2.5.10 y me funciono, en el info de php mustra la informacion de interbase, ahora me toca es conectarme desde php. cualquier duda los sigo molestado.

gracias (y)


Ah qué bien amigo, pues espero tus resultados que aquí estaré para ayudarlo (y).

Saludos.
  • 0

#13 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 09 February 2010 - 08:34 AM

de nuevo por aca, ahora intentando conectarme con codigo phpa a firebird pero lo que he encontrado esta un poco enredado, lo que mejor encontre en un foro fué el siguiente codigo si gustan pueden probarlo y veran que les muestra...



php
  1. <?php
  2. $path = 'C:\EMPLOYEE.FDB'; ó $path = 'localhost:C:\EMPLOYEE.FDB';
  3. $usuario = 'SYSDBA';
  4. $password = 'masterkey';
  5. $dbhd = ibase_connect ($path, $usuario, $password);
  6. $sql = 'SELECT * FROM EMPLOYEE';
  7. $consulta = ibase_query ($dbhd, $sql);
  8. while ($fila = ibase_fetch_object ($consulta))
  9. {
  10. print $fila->EMP_NO . "\n";
  11.  
  12. }
  13. ibase_close ($dbhd);?>



En mi caso particualar me aparece lo siguiente, y no se porque.... ?

GRADO . "\n"; } ibase_close ($dbhd); ?>

les agradezco su colaboración y ayuda, adicionalmente quisiera preguntarles donde puedo enontrar un tutorial o manual donde encuentre todo hacerca de PHP y FIREBIRD (conexcion, funciones, etc, etc, .... )
  • 0

#14 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 February 2010 - 09:05 AM

Hola JAI_ME, ¿qué pasó con el code que posteé en el primer post?, debería de funcionarte, de todos modos intentalo así:



php
  1. print '<div>' . $fila->EMP_NO . '</div><br />';



luego nos comentas.

Saludos.
  • 0

#15 tacubo

tacubo

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 130 posts

Posted 09 February 2010 - 09:30 AM

amigo JAI_ME mira yo no entiendo para que es eso de close  :huh: pero por lo que yo e usado es como lo muestra nuestro amigo enecuneme(por cierto saludos hace tiempo que ni un saludo jajajaja) no se para que sea pero por lo que yo entiendo la consulta que tu quieres de alguna manera conectar ver y luego cerrar en php no se comporta como delphi
que haces la conexion y luego la cierras como muestra en el ejemplo
enecuneme asi yo tambien lo e aplicado claro no en la base de datos que maneja o nos esta enseñando sino yo lo e manejado con informix_sql(aclarando es de paga y no gratis  :angry: que  mal pedo por el que lo vende  :$$$: )
pero por ejemplo yo use consultas de este tipo



php
  1. $qryCia="select c_curso,d_curso from cursos
  2.             where c_st=&#39;A&#39;
  3.             order by d_curso"; //primero haces la consulta
  4. $resCia= ifx_prepare($qryCia,$conecta,IFX_SCROLL); //en informix
  5. //preparas conexi&#39;on al motor cualquiera que tu tengas claro esta
  6. ifx_do($resCia); //se realiza conexion con todo y la consulta
  7. while ($filaCia=ifx_fetch_row($resCia,"NEXT")){//desplegado de los
  8. //registros e impresion y ya estuvo
  9. echo $filaCia[c_curso]."-".$filaCia[d_curso]."<br>";
  10. }



como vez en ningun momento tampoco usa eso del close yo lo que te recomendaria hazlo como lo muestra enecumene si lo puso es porque funciona porque en realidad nunca e usado ese close y la verdad no se ni que finalidad tenga hasta estoy pensando en que ni siquiera va ahi a lo mejor debe de ir en una clase como si ya fueras a cerrar una aplicacion como vez bueno es lo que pienso y e echo suerte  :D

encontre esta pagina espero te sirva lo malo en ingles
http://php.net/manua.../book.ibase.php

suerte  :cheesy:
  • 0

#16 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 09 February 2010 - 10:41 AM

El codigo de arriba me gusta pero no me funciono, al probarlo me sale lo siguiente

____________
GRADO"; ?>
____________

como si no mostrara el resultado (el atributo en mi tabla se llama grado), cual sera el problema ? habra alguna forma de saber donde exactamente esta el error, un compilador o algo parecido que lo oriente a uno?

gracias
  • 0

#17 tacubo

tacubo

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 130 posts

Posted 09 February 2010 - 11:21 AM

hola amigo JAI_ME ya me perdi  o sea no tienes problema en la consulta sino en la presentacion por asi decirlo

es decir te sale lo siguiente con el eco por ejemplo

campo1          campo2
resgistro1      resgistro1
resgistro2      resgistro2
resgistro3      resgistro3
resgistro4      resgistro4

y tu lo quieres asi [table]
[tr]
[td]campo1[/td][td]campo2[/td]
[/tr]
[tr]
[td]resgistro1[/td][td]resgistro1[/td]
[/tr]
[tr]
[td]resgistro2[/td][td]resgistro2[/td]
[/tr]
[tr]
[td]resgistro3[/td][td]resgistro3[/td]
[/tr]
[tr]
[td]resgistro4[/td][td]resgistro4[/td]
[/tr]
[/table]

eso es lo que quieres hacer
  • 0

#18 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 February 2010 - 11:28 AM

Recomiendo que pruebes cambiando "<?php" por "<?" y otra cosa, veo lo siguiente:



php
  1. $path = 'C:\EMPLOYEE.FDB'; ó $path = 'localhost:C:\EMPLOYEE.FDB';



¿El code está así o fue expresamente?.

Saludos.
  • 0

#19 JAI_ME

JAI_ME

    Member

  • Miembros
  • PipPip
  • 21 posts

Posted 09 February 2010 - 11:36 AM

respondiendole a tabuco, creo que la consulta si esta bien el problema es que no me muestra ningun resultado en ninguna de las dos formas...?????

a enecumene lo que exprese alli fue simbolicamente, es decir, de la forma en que lo coloque me sale lo mismo es decir nada... ???

solo sale el nombre del atributo como lo mostre anteriormente....

:^)

  • 0

#20 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 February 2010 - 11:51 AM

Bueno intenta ésto último, coloca la ruta de la BD así:

$path = 'localhost:C:\\EMPLOYEE.FDB';


con doble "\" y recuerda que en la consulta los nombres de los campos y tabla deben estar en mayusculas.

¡Suerte!.
  • 0




IP.Board spam blocked by CleanTalk.