Lo pongo en php porque creo que es lo que me está dando el error, tengo una consulta que hago en un archivo.php, en la consulta le pido varias cosas y debe devolver varias filas, si hago la consulta a través del phpmyadmin me da lo que quiero sin problemas, pero si la hago en el archivo(misma consulta) solo me devuelve los resultados de la primer fila, a partir de la primera fila todo está vacío, al contrario que con el phpmyadmin que me devuelve 12 filas.
Les adjunto el código y el resultado:
//obvio la parte de conexión porque esa he comprobado que está bien ya que hago otras consultas y las devuelve correctamente
$inves_query = mysql_query('SELECT nombre, descripcion, recurso1, recurso2, tiempo FROM investigaciones WHERE raza =\''.$_SESSION['raza'].'\'') or die (mysql_error());
$inves_dat = mysql_fetch_row($inves_query) or die (mysql_error());
echo $inves_dat[0];
echo $inves_dat[1];
echo $inves_dat[2];
echo $inves_dat[3];
echo $inves_dat[4];//este es el último que imprime, a partir de aquí todo en blanco
echo $inves_dat[5];
echo $inves_dat[6];
echo $inves_dat[7];
echo $inves_dat[8];
¿a alguien se le ocurre porqué estos resultado diferentes en phpmyadmin y en la consulta que yo hago?
El valor de $_SESSION['raza'] es tauri, cuando hice la consulta en phpmyadmin lo puse tal cual, así que no creo que el problema esté por ahí
mysql_fetch_row te regresa un array, entonces debes recorrer el array con un while.
Ejemplo:
<?php
$query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query, $link);
while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}
?>
Citar
echo $inves_dat[4];//este es el último que imprime, a partir de aquí todo en blanco
Esto es porque:
$inves_dat[0]; //es el valor que contiene el campo nombre
$inves_dat[1]; //es el valor que contiene el campo descripcion
$inves_dat[2]; //es el valor que contiene el campo recurso1
$inves_dat[3]; //es el valor que contiene el campo recurso2
$inves_dat[4]; //es el valor que contiene el campo tiempo
Como tu consulta solo tiene 5 campos (desde el
indice 0 hasta el
indice 4) entonces por eso no te muestra un valor para $inves_dat[5];, porque no hay un 6 campo (quinto indice).
Saludos.
fijate que selecciono esos campos donde el campo raza sea igual a tauri(en el caso concreto que estoy probando) hay 12 filas en las que ese campo es tauri y esas 12 filas son las que quiero imprimir, además lo curioso es que si uso el siguiente código para ver cuantos resultado devuelve si que me lo imprime 12 veces
$cantidad_inves = mysql_num_rows($inves_query);
for($i = 0; $i < $cantidad_inves;$i++){
?>
<div id="investigacion">
<?php
printf("%s",$inves_dat[0]);
?>
</div>
He seguido tu consejo y he adaptado el código que pusiste, me ha quedado así
while($inves_dat = mysql_fetch_array($inves_query)){
echo " 1:" .$inves_dat["nombre"];
}
Funciona casi a la perfección, me devuelve todos los resultados que quiero, menos el primero, es decir, devuelve 11 en vez de 12
Debes estar utilizando ese mismo $inves_dat = mysql_fetch_array($inves_query) un poco más arriba, mas o menos parecido al segundo ejemplo.
$query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query, $link);
while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}
Resultado:
Citar
id: 1 nombre: 1mpuls0
id: 2 nombre: Nameless
$query="SELECT user_id, user_name FROM users;";
$result=mysql_query($query, $link);
mysql_fetch_array($result); //<----- fetch array se utiliza antes del while
while($rows=mysql_fetch_array($result)) {
echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
}
Resultado:
Citar
id: 2 nombre: Nameless
Saludos.
si, era eso, ahora mismo iba a decir que ya lo había solucionado xD
Muchísimas gracias por tu ayuda ;D