Comunidad de diseño web y desarrollo en internet online

¿Error al obtener datos de dos variables mysql distintas con php?

Citar            
MensajeEscrito el 01 Feb 2017 03:01 pm
Simplemente no me da los datos de la segunda variable mysql, que en éste caso es la de member.

Código HTML :

<!DOCTYPE html>
<html>
<html>
<body>
<?php
    $link = mysql_connect("host", "user", "pw");
    $nick = urlencode($_GET['nick']);
    mysql_select_db("statistiques", $link);
    $result = mysql_query("SELECT * FROM player WHERE name='".$nick."'", $link);
    $result2 = mysql_query("SELECT * FROM member WHERE name='".$nick."'", $link);
    // comienza un bucle que leerá todos los registros existentes
    while($row = mysql_fetch_array($result)) { 
    while($row2 = mysql_fetch_array($result2)) { }
            // $row es un array con todos los campos existentes en la tabla
            echo "<hr>";
            echo "ID: ".$row['id']."<br>";
            echo "Nombre: ".$row['name']."<br>";
            echo "Titulo: ".$row['title']."<br>";
            echo "Experiencia: ".$row['experience']."<br>";
            echo "Quesos conseguidos siendo primero: ".$row['first']."<br>";
            echo "Bootcamps: ".$row['bootcamp']."<br>";
            echo "Rondas jugadas: ".$row['round_played']."<br>";
            echo "Quesos conseguidos como chaman: ".$row['shaman_cheese']."<br>";
            echo "Ratones salvados: ".$row['saved_mice']."<br>";
            echo "Ratones salvados en modo dificil: ".$row['saved_mice_hard']."<br>";
            echo "Ratones salvados en modo divino: ".$row['saved_mice_divine']."<br>";
            echo "Quesos conseguidos: ".$row['cheese_gathered']."<br>";
            echo "Fecha de matrimonio: ".$row2['marriage_date']."<br>";
        } // fin del bucle de instrucciones
        mysql_free_result($result); // Liberamos los registros
        mysql_close($link); // Cerramos la conexión con la base de datos
        echo "<hr>";
?>
</body>
</html>

Por Py. Yuir

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Feb 2017 05:35 pm
Estas haciendo dos querys, metiendo los datos del segundo en un while vacio

while($row2 = mysql_fetch_array($result2)) { }

Es decir recorre todo sin hacer nada, luego sigue con tu loop. Si ambas tablas comparten una columna, por que no haces un join en tu SQL y te evitas la segunda consulta?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 02 Feb 2017 04:50 pm

solisarg escribió:

Estas haciendo dos querys, metiendo los datos del segundo en un while vacio

while($row2 = mysql_fetch_array($result2)) { }

Es decir recorre todo sin hacer nada, luego sigue con tu loop. Si ambas tablas comparten una columna, por que no haces un join en tu SQL y te evitas la segunda consulta?

Jorge


No entiendo muy bien. ¿Me darías un ejemplo o el cambio que tendría que hacer para poder hacer una conexión exitosa?

Por Py. Yuir

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Feb 2017 05:06 pm
Algo asi

$result = mysql_query("SELECT player.name, player.XXX, member.name, member.XXX FROM player left join member on player.name=member.name WHERE player.name='".$nick."'", $link);

El left join the permite hacer una sola consulta. Las estoy uniendo por la columna name, que no es lo ideal porque puede estar repetida (a menos que tenga la propiedad unique) , sino que conviene hacer el join por alguna columna numerica, habitualmente denominada clave externa

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 02 Feb 2017 05:45 pm

solisarg escribió:

Algo asi

$result = mysql_query("SELECT player.name, player.XXX, member.name, member.XXX FROM player left join member on player.name=member.name WHERE player.name='".$nick."'", $link);

El left join the permite hacer una sola consulta. Las estoy uniendo por la columna name, que no es lo ideal porque puede estar repetida (a menos que tenga la propiedad unique) , sino que conviene hacer el join por alguna columna numerica, habitualmente denominada clave externa

Jorge


¿Elimino el segundo while? ¿O ambos?

Por Py. Yuir

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Feb 2017 06:02 pm
Tienes un solo query que te devuelve lo que necesitas, con un solo while es suficiente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 02 Feb 2017 10:59 pm

solisarg escribió:

Tienes un solo query que te devuelve lo que necesitas, con un solo while es suficiente

Jorge

Muchas gracias! Ya conseguí el resultado esperado.

Por Py. Yuir

2 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.