Consulta sql no devuelve todos los valores[SOLUCIONADO]

Iniciado por Daklon, 26 Julio 2013, 16:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Daklon

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í

1mpuls0

mysql_fetch_row te regresa un array, entonces debes recorrer el array con un while.

Ejemplo:

Código (php-brief) [Seleccionar]

<?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>";
}
?>

abc

1mpuls0

#2
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.
abc

Daklon

#3
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

1mpuls0

#4
Debes estar utilizando ese mismo $inves_dat = mysql_fetch_array($inves_query) un poco más arriba, mas o menos parecido al segundo ejemplo.

Código (php-brief) [Seleccionar]

       $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

Código (php-brief) [Seleccionar]

$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.
abc

Daklon

si, era eso, ahora mismo iba a decir que ya lo había solucionado xD

Muchísimas gracias por tu ayuda ;D