1

2 つの異なるテーブルから情報を取得するために、入れ子になった while ループを使用しています (学生、これらのテーブルの両方が主キーでリンクされている成績 - 「id」)

次の形式で出力したい:

Student ID "123"

 - Grade 1 for ID "123"
 - Grade 2 for ID "123"

Student ID "555"

 - Grade 1 for ID "555"
 - Grade 2 for ID "555"

Student ID "666"

 - Grade 1 for ID "666"
 - Grade 2 for ID "666"

現在、次のように出力されます。

Student ID "123"

 - Grade 1 for ID "123" 
 - Grade 2 for ID "123"
 - Grade 1 for ID "555"
 - Grade 2 for ID "555" 
 - Grade 1 for ID "666" 
 - Grade 2 for ID "666"

Student ID "555"
Student ID "666"

これはPHPコードです

<?php
include ("../../php/account.php");

$dbh = mysql_connect ( $hostname, $username, $password )
                   or die ( "Unable to connect to MySQL database" );
mysql_select_db( $project );

$s = mysql_query("SELECT * FROM newstudent");
$r = mysql_query("SELECT * FROM grades");  

while($rows=mysql_fetch_array($s))
    {
    echo "Student ID: ".$rows['id']."<br/>";
    echo "First Name: ".$rows['firstname']."<br/>";
    echo "Last Name: ".$rows['lastname']."<br/>";
    echo "Email: ".$rows['email']."<br/>";
    echo "<br/>";

            while($rows=mysql_fetch_array($r))
            {
                echo "Subject: ".$rows['subject']."<br/>";
                echo "Grade One: ".$rows['gradeone']."<br/>";
                echo "Grade Two: ".$rows['gradetwo']."<br/>";
                echo "Grade Three: ".$rows['gradethree']."<br/>";
                echo "<br/>";                
            }

    }

?>

誰かが解決策を知っているなら、私を助けてください!どうもありがとう!

4

5 に答える 5

1

2 番目のループで $rows 変数を上書きしていると思います。2 つの異なる変数を使用してみてください

編集:内側のループは単に「すべての成績を印刷する」と述べているため、外側のループで調べている学生とは関係ありません。

他の誰かが気づいたように、最初のループから取っている学生だけの成績を取ることができる外部キーが確かに必要です。

于 2013-10-31T23:13:29.517 に答える