PDA

Ver la Versión Completa : Que está mal ?


jwmoreira
04-05-2005, 01:01:34
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:


$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:


$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:


$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:


$fila= ibase_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:


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