我想知道我数据库中的前三名学生,所以我使用AVG功能,但似乎我有一些错误,这是我的代码:
$result = mysql_query("SELECT grade.GStudNo, AVG(grade.Grade) as Grade, students.LName, students.FName, students.MName, students.Course
FROM students INNER JOIN grade ON students.StudNo = grade.GStudNo
WHERE GSem = '1st Semester' AND GYear = '2007'
GROUP BY grade.GStudNo
ORDER BY AVG(grade.Grade) ASC")
...
<?php while($myrow = mysql_fetch_assoc($result))
{?>
<tr>
<td><?php echo "$myrow[LName] ";echo "$myrow[FName] "; echo "$myrow[MName]"; ?></td>
<td><?php echo "$myrow[Grade]";?></td>
</tr>
<?php } ?>
这是错误消息:注意:未定义的索引:第368行的C:\ xampp \ htdocs \ strawman \ default.php等级
但是我定义了AVG(grade.Grade)AS等级.. :(
答案 0 :(得分:1)
MySQL可能会混淆,因为您使用字段名称Grade
作为别名,然后再次在您的ORDER子句中在AVG中使用它。试试这个(它只调用一次AVG):
SELECT grade.GStudNo, AVG(grade.Grade) as gradeAverage ...
ORDER BY gradeAverage ASC
而且,为什么你在变量周围使用双引号?处理起来要快得多:
<?php echo $myrow['LName'] .' '. $myrow['FName'] .' '. $myrow['MName']; ?>
答案 1 :(得分:0)
您使用以下语法:
<?php echo "$myrow[LName] ";
你会想要使用这样的东西:
<?php echo "$myrow['LName'] ";
或者,我使用双引号时的首选语法:
<?php echo "{$myrow['LName']} ";
其他变量也是如此。
抛出引号将导致PHP“猜测”你的意思。它有时会好起来,其他时候可能会出错。