Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Se Puede Trabajar FireBird con PHP???? (https://www.clubdelphi.com/foros/showthread.php?t=22592)

AGAG4 21-06-2005 02:52:12

Se Puede Trabajar FireBird con PHP????
 
Quiero hacer mi primera programa en PHP haciendo una consulta a una tabla de una base de datos, ya instale el Apache 2.054 y el PHP 4 ya realize las configuraciones pertinentes para PHP y el Apache, tengo el siguiente Código que uso para conectarme a la BD y hacer la consulta a una tabla:
Código PHP:

<?php    
$path 
'c:/Ejemplo/datos/MiBD.gdb';    
$usuario 'SYSDBA';    
$password 'masterkey';    
$dbhd ibase_connect ($path$usuario$password);    
$sql 'SELECT * FROM clientes';    
$consulta ibase_query ($dbhd$sql);    
while (
$fila ibase_fetch_object ($consulta)) 
{        
print 
$fila->email "\n";    
}    
ibase_close ($dbhd);?>

Y me lanza en el Internet Explorer los siguientes errores:
Warning: ibase_connect(): unavailable database in C:\Servidor\php\Paginas\QryFireBird1.php on line 5

Warning: ibase_query(): no InterBase link resource supplied in C:\Servidor\php\Paginas\QryFireBird1.php on line 7

Warning: ibase_fetch_object(): supplied argument is not a valid InterBase result resource in C:\Servidor\php\Paginas\QryFireBird1.php on line 8

Warning: ibase_close(): 0 is not a valid InterBase link resource in C:\Servidor\php\Paginas\QryFireBird1.php on line 12

Este ejemplo lo tome de este club....

Que estare haciendo mal????

Agradezco cualquier sugerencia al respecto....

jachguate 21-06-2005 02:57:34

Cita:

Empezado por AGAG4
Que estare haciendo mal????

Cita:

Empezado por AGAG4
Warning: ibase_connect(): unavailable database in C:\Servidor\php\Paginas\QryFireBird1.php on line 5

Hola.

Sugiero que el servidor de interbase sea arrancado antes de intentar de nuevo acceder a esta página.

Hasta luego.

;)

AGAG4 21-06-2005 23:23:21

????
 
Cita:

Empezado por jachguate
Hola.

Sugiero que el servidor de interbase sea arrancado antes de intentar de nuevo acceder a esta página.

Hasta luego.

;)

Juan Antonio si te refieres de que debe de estar abierto el Guardian de FireBird antes de acceder a la consulta por php por medio del internet explorer te informo que si siempre tengo abierto el FireBird, he escarbado un poco en el google y veo la misma instrucción para conectarme a una base de datos de INTERBASE por eso pregunto si se puede conectar a FireBird ya se que este úlimo es hijo de Interbase pero como es la primera vez que intento hacer consultas por medio de PHP ando viendo cual es la causa de los errores que me muestra, ya revise el php.ini que tengo en c:\windows y tengo habilitado el dll del interbase.... Gracias por su respuesta.

jachguate 21-06-2005 23:36:24

El mensaje de error es típico de cuando el servidor no está levantado. Si no es eso, pues francamente no tengo idea por ahora.

Mick 22-06-2005 00:59:20

Prueba a indicar el nombre de la computadora, ejemplo:

$path = 'localhost:c:\Ejemplo\datos\MiBD.gdb';

Otra cosa, los nombres de los campos debes indicarlos en mayusculas, porque asi los devuelve el modulo de interbase, sino php no los encontrará (php es case-sensitive en los nombres de las variables como C) ejemplo:

print $fila->EMAIL . "\n";

Si tienes dudas sobre lo que contiene $fila, puedes probar a hacer un:

print_r($fila);

Que te imprimira todo el contenido del registro $fila incluidos nombres de campos y valores , indicando tambien si la variable se trata de un objeto o un array, etc, bastante util para debugear.

Otra cosa, es aconsejable utilizar ibase_pconnect en lugar de ibase_connect, ya que es muchisimo mas rapido mantener la conexion entre peticiones de paginas, que reconectar en cada peticion.

Mas cosas, es aconsejable que indiques el charset en el ibase_connect,
si tus paginas web van en iso normal:

$ibase_charset = 'ISO8859_1';

Si tus paginas van en UTF-8 (formato que cada vez se utiliza mas sobre todo en paginas que deben poder internacionalizarse ya que permite mostrar los caracteres de cualquier idioma):

$ibase_charset= 'UNICODE_FSS';

Usando firebird esta ultima opcion es muy util, ya que aunque la base de datos originalmente este guardada en ISO8859_1 firebird hace la conversion de forma automatica, devoviendo la informacion directamente en UTF-8.

Saludos

AGAG4 22-06-2005 01:52:47

Ahora....
 
Cita:

Empezado por Mick
Prueba a indicar el nombre de la computadora, ejemplo:

$path = 'localhost:c:\Ejemplo\datos\MiBD.gdb';

Otra cosa, los nombres de los campos debes indicarlos en mayusculas, porque asi los devuelve el modulo de interbase, sino php no los encontrará (php es case-sensitive en los nombres de las variables como C) ejemplo:

print $fila->EMAIL . "\n";

Si tienes dudas sobre lo que contiene $fila, puedes probar a hacer un:

print_r($fila);

Que te imprimira todo el contenido del registro $fila incluidos nombres de campos y valores , indicando tambien si la variable se trata de un objeto o un array, etc, bastante util para debugear.

Otra cosa, es aconsejable utilizar ibase_pconnect en lugar de ibase_connect, ya que es muchisimo mas rapido mantener la conexion entre peticiones de paginas, que reconectar en cada peticion.

Mas cosas, es aconsejable que indiques el charset en el ibase_connect,
si tus paginas web van en iso normal:

$ibase_charset = 'ISO8859_1';

Si tus paginas van en UTF-8 (formato que cada vez se utiliza mas sobre todo en paginas que deben poder internacionalizarse ya que permite mostrar los caracteres de cualquier idioma):

$ibase_charset= 'UNICODE_FSS';

Usando firebird esta ultima opcion es muy util, ya que aunque la base de datos originalmente este guardada en ISO8859_1 firebird hace la conversion de forma automatica, devoviendo la informacion directamente en UTF-8.

Saludos

Ya puse el nombre de la PC antes dela Ruta de la BD (NombrePc:c:\PHP\BD.gdb), cambie ibase_connect por ibase_pconnect, añadí
$ibase_charset= 'UNICODE_FSS'; en la Ruta de la Base de Datos Probe usando las 2 Diagonales (/ \), pero ahora me pone la Página en BLANCO ni siquiera me pone ningún Error, Ahora que estará pasando????

Gracias por sus Respuestas....

Mick 22-06-2005 11:19:23

Si te sale una pagina en blanco, no hay errores y el script se ha ejecutado correctamente.
Simplemente el resultado de la query no ha devuelto datos, por eso no hay nada que mostrar.
Prueba a debugear un poco poniendo echo(s) y print_r(s) para ver
por donde va el fllujo del programa.

Saludos
Miguel

AGAG4 22-06-2005 16:34:45

ok
 
Voy a investigar un poco en debugear con echo(s) y print_r(s)...

Gracias

Que Tenga Buen Día....

AGAG4 22-06-2005 21:42:40

ya quedo
 
Asi es, como me lo menciono Mick, estaba bien las instrucciones pero sólo me faltaba mandar a imprimirlo por pantalla, quedo de la siguiente manera con echo:
Código PHP:

....
while (
$fila ibase_fetch_object ($sth)) 
{        
echo 
$fila->CAMPO1 " " $fila->CAMPO2 "<br>";
}    
.... 

Muchas Gracias Mick....

Que Tengan Buen Día....

JXJ 15-10-2005 19:40:21

AGAG4

¿Puedes poner el codigo completo corregido. ?

no encuentro donde insertaste el codigo que muestras.
imprimiendo con echo

vale gracias

JXJ 16-10-2005 03:15:50

Hice pruebas. por que tengo interes en usar
firebird, php y apache juntos

Tome tu codigo y le cambien unas cosas.
Esto es la direccion deonde tengo la base de datos y nombre
$path = 'C:\EMPLOYEE.FDB';
La tabla se llama EMPLOYEE
$sql = 'SELECT * FROM EMPLOYEE';
y la fila
print $fila->EMP_NO . "\n";
solo cambien los datos y funcionara.

-------------------------
Código PHP:

<?php    
$path 
'C:\EMPLOYEE.FDB';    
$usuario 'SYSDBA';    
$password 'masterkey';    
$dbhd ibase_connect ($path$usuario$password);    
$sql 'SELECT * FROM EMPLOYEE';    
$consulta ibase_query ($dbhd$sql);    
while (
$fila ibase_fetch_object ($consulta)) 
{        
print 
$fila->EMP_NO "\n";    

}    
ibase_close ($dbhd);?>

-----------
Otra cosa a mi me funciono bien. con print y con echo
con print se mostraban los datos
en una sola linea asi
2458911
usando echo se mostraron asi
2
4
5
8
9
11
-----------
Alo mejor a ti te dio error AGAG4, por que no habias
registrado la base de datos.
yo la registre.
Esto para que si a alguien le interesa. lo pongo.


La franja horaria es GMT +2. Ahora son las 04:06:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi