Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Daklon en 26 Julio 2013, 16:28 pm



Título: Consulta sql no devuelve todos los valores[SOLUCIONADO]
Publicado por: Daklon en 26 Julio 2013, 16:28 pm
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:
Código:
//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í


Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 16:45 pm
mysql_fetch_row te regresa un array, entonces debes recorrer el array con un while.

Ejemplo:

Código
  1. <?php
  2. $query="SELECT user_id, user_name FROM users;";
  3. $result=mysql_query($query, $link);
  4. while($rows=mysql_fetch_array($result)) {
  5. echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
  6. }
  7. ?>
  8.  


Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 16:51 pm
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.


Título: Re: Consulta sql no devuelve todos los valores
Publicado por: Daklon en 26 Julio 2013, 16:57 pm
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

Código:
$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í

Código:
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


Título: Re: Consulta sql no devuelve todos los valores
Publicado por: 1mpuls0 en 26 Julio 2013, 17:14 pm
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
  1.        $query="SELECT user_id, user_name FROM users;";
  2. $result=mysql_query($query, $link);
  3. while($rows=mysql_fetch_array($result)) {
  4. echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
  5. }
  6.  

Resultado:
Citar
id: 1 nombre: 1mpuls0
id: 2 nombre: Nameless

Código
  1. $query="SELECT user_id, user_name FROM users;";
  2. $result=mysql_query($query, $link);
  3.  
  4. mysql_fetch_array($result); //<----- fetch array se utiliza antes del while
  5.  
  6. while($rows=mysql_fetch_array($result)) {
  7. echo "id: ".$rows['user_id']." nombre: ".$rows['user_name']."<br>";
  8. }
  9.  

Resultado:
Citar
id: 2 nombre: Nameless



Saludos.


Título: Re: Consulta sql no devuelve todos los valores
Publicado por: Daklon en 26 Julio 2013, 17:15 pm
si, era eso, ahora mismo iba a decir que ya lo había solucionado xD

Muchísimas gracias por tu ayuda ;D