Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Que está mal ? (https://www.clubdelphi.com/foros/showthread.php?t=21017)

jwmoreira 04-05-2005 01:01:34

Que está mal ?
 
Estoy empezando a revisar PHP con este script, pero al parecer algo me falta porque no muestra los datos, la conexion la realiza bien, trae bien la cantidad de registros de la tabla consultada pero al mostrar los datos no sale nada:

Código PHP:

$path 'host:alias.fdb';
$usuario 'SYSDBA';
$password 'masterkey';
$dbhd ibase_connect ($path$usuario$password);
$sql 'SELECT cod_modelo FROM tb_eq_modelos';
$consulta ibase_query($dbhd$sql);

if (
ibase_num_fields($consulta) > 0) {
   while (
$fila ibase_fetch_row($consulta)) {
       print 
$fila ."\n";  // Primera sintaxis nada
       
echo "$fila->cod_modelo \n";  // Segunda sintaxis nada
       
print "XX".$fila -> cod_modelo ."\n"// Le agregue XX y si las muestra las 11 lineas de los 11 registros
    
}
}
else {
   die(
"No se han encontrado valores en la consulta");



Saludos,
Jorge

Mick 04-05-2005 02:44:55

ibase_fetch_row devuelve un array de modo que para acceder a los campos debes indicar algo como:

Código PHP:

$fila ibase_fetch_row($consulta);
echo 
$fila[0];  // Primer campo de la query
echo $fila[1];  // Segundo campo de la query 

Si quiere que te devuelva un array asociativo tendrias que usar lo siguiente:

Código PHP:

$fila ibase_fetch_assoc($consulta);
echo 
$fila['COD_MODELO'] ; // !Importante: El nombre del campo debe estar siempre en mayusculas. 

Si quiere recibir un objeto, habria que usar:

Código PHP:

$filaibase_fetch_object($consulta);
echo 
$fila->COD_MODELO// !Importante: Como antes en mayusculas 

Otra cosa muy importante, te sobra la funcion ibase_num_fields,
esa funcion no sirve para lo que crees.
No indica el numero de registros devueltos por la query, sino el numero de
CAMPOS, es decir en tu ejemplo siempre te va a devolver el valor: 1 ,
(has indicado solo un campo cod_modelo en el SELECT).
Asi que elimina simplemente ese IF, no sirve para nada.

Cuando necesites saber exactamente que contiene dentro un array u objeto
de php, puedes indicar algo como lo siguiente:

Código PHP:

echo '<pre>';
echo 
print_r($file);
echo 
'</pre>'

Php te imprira el contenido interno de la variable en una estructura en forma de arbol, podras ver rapidamente que contiene (asi como saber si es un array normal, o un array asociativo o un objeto, etc).

Saludos

jwmoreira 04-05-2005 16:12:56

Gracias Mick, todo excelente a excepción de la cláusula ibase_fetch_assoc me da el siguiente error:

Fatal error: Call to undefined function: ibase_fetch_assoc() in c:\phpdev\www\taller\prueba.php on line 19

Mick, en donde puedo ver las diferentes sintaxis para todos los comando relacionados a firebird con php, ej: ibase_fetch_object, ibase_fetch_row, etc.

Saludos,
Jorge.

Mick 04-05-2005 19:32:29

Seguramente tendras una version antigua de php que aun no soportaba
esa funcion (En versiones menores que la 4.3.0 no existia esa funcion).

La ayuda de php, esta en www.php.net, la puedes consultar online o tambien te la puedes bajar de alli en formato .hlp de windows, para consultar offline.

Saludos


La franja horaria es GMT +2. Ahora son las 10:42:47.

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