我有一个运行数据库的代码,并将所有内容输出到php页面。
$avg = mysql_query("SELECT subject, gradeone, gradetwo, gradethree, ((gradeone + gradetwo + gradethree) / 3) as average FROM grades");
$q = mysql_query("SELECT * FROM newstudent AS n JOIN grades AS g ON n.id = g.id ORDER BY n.id") or die (mysql_error());
$last_student = null;
while ($row = mysql_fetch_assoc($q))
{
if ($row['id'] !== $last_student)
{
$last_student = $row['id'];
echo "Student ID: ".$row['id']."<br/>";
echo "First Name: ".$row['firstname']."<br/>";
echo "Last Name: ".$row['lastname']."<br/>";
echo "Email: ".$row['email']."<br/>";
echo "<br/>";
}
print "<table id=reporttable>";
print "<tr id=toprow> <td>subject</td> <td>gradeone</td> <td>gradetwo</td> <td>gradethree</td> <td>average</td></tr>";
print "<tr>";
print " <td>";
print $row["subject"];
print "</td>" ;
print " <td>";
print $row["gradeone"];
print "</td>" ;
print " <td>";
print $row["gradetwo"];
print "</td>" ;
print " <td>";
print $row["gradethree"];
print "</td>" ;
while ($r = mysql_fetch_array($avg))
{
print " <td>";
print $r['average'];
print "</td>" ;
}
print " </tr>";
print "</table>";
}?>
期望的结果应如下所示
以下代码的结果很好,但只有一个小问题。
第二个while循环假设是计算平均值并输出新行的每个记录。相反,它做到了这一点:
任何人都知道如何确保每个平均成绩都与学生的每一行一致吗?
答案 0 :(得分:2)
$q = mysql_query("
SELECT
n.id,
n.firstname,
n.lastname,
n.email,
g.gradeone,
g.gradetwo,
g.gradethree,
((g.gradeone + g.gradetwo + g.gradethree) / 3) AS average
FROM
newstudent n JOIN grades g USING (id)
ORDER BY
n.id
") or die (mysql_error());
尝试使用此查询,然后在一个循环中输出结果 - 删除
while ($r = mysql_fetch_array($avg))
带括号。
留下这样的东西:
....
print "<td>$row['gradetwo']</td>";
print "<td>$row['gradethree']</td>";
print "<td>$row['average']</td>";
....