显示班级中注册的学生总数


display total student enrolled in the class

im 为学校做一个系统。 我的问题是我无法显示每个班级注册的学生总数。 我可以在 DB/phpmyadmin 中查询我需要 diplay 的数据。 但是对于硬代码,它不起作用。 谁能帮忙?

这是我的代码正文。

<?php
         $key="";
    if(isset($_POST['searchtxt']))
        $key=$_POST['searchtxt'];
    if($key !="")
        $sql_sel=mysql_query("SElECT * FROM class_tbl WHERE class_name  like '%$key%' ");
    else
            $sql_sel=mysql_query("SELECT * FROM class_tbl");

            $i=0;
    while($row=mysql_fetch_array($sql_sel)){
    $i++;
    $color=($i%2==0)?"lightblue":"white";
        ?>
      <tr bgcolor="<?php echo $color?>">
            <td><?php echo $i;?></td>
            <td><?php echo $row['class_name'];?></td>
            <td><?php echo $row['class_id'];?></td>
            <td><?php echo $row['class_year'];?></td>
            <td><?php
                    $result = mysql_query("SELECT class_name, COUNT( class_name ) FROM stu_tbl c GROUP BY class_name");
                    $num_rows = mysql_num_rows($result);
                    echo "$num_rows";
                    // $total_enrolled=mysql_query("SELECT COUNT( * ) FROM stu_tbl WHERE class_name =  'class_name'");
                    //echo $total_enrolled;
                ?>

如果 IM 使用此代码,则所有类的输出显示将为 6。 我认为这是班级总数。 不是学生注册。 我在phpmyAdmin中使用的查询工作正常,它显示了我想要的输出。 提前感谢您的帮助。 真的很感激。

在phpmyadmin中,我使用此查询,并且它工作正常。

SELECT class_name, COUNT( class_name ) FROM stu_tbl c GROUP BY class_name

我希望输出显示为:

no class_name  class_id  year  total_student_enrolled  
1   1 Amanah    1        2014   6       
2   1 Bestari   2        2014   2       
3   2 Amanah    9        2014   5       
4   2 Bestari   14       2014   10      
5   3 Amanah    15       2014   7       
6   3 Bestari   16       2014   1

注册学生总数将从学生表中计算,该表基于学生表中的class_name,与class_name关联的学生人数将计算为total_student_enrolled

循环内的这个查询是错误的, 这将始终为循环的所有迭代返回相同的结果

SELECT class_name, COUNT( class_name ) FROM stu_tbl c GROUP BY class_name

而且你总是只从中抓住第一排。

它应该是

SELECT COUNT(1) FROM stu_tbl c WHERE class_name= 'your variable'

这样,它只为你提供该类的计数。这几乎与您在注释中禁用的查询完全相同。只是您没有在那里正确使用变量名称。

如何防止 PHP 中的 SQL 注入?

是否有特殊原因,为什么不尝试使用 One Select 来做? 根据class_tbl中的项目数,这将导致您在 while 子句中发送(太多(许多选择。
试试这个:

"SELECT 
   class_tbl.class_id, class_tbl.class_name, class_tbl.class_year,
   COUNT(stu_tbl.stu_id) AS total_student
FROM class_tbl
LEFT JOIN stu_tbl ON class_tbl.class_name = stu_tbl.class_name
GROUP BY class_tbl.class_name"

使用类键:

"SELECT 
   class_tbl.class_id, class_tbl.class_name, class_tbl.class_year,
   COUNT(stu_tbl.stu_id) AS total_student
FROM class_tbl
LEFT JOIN stu_tbl ON class_tbl.class_name = stu_tbl.class_name
WHERE class_tbl.class_name  like '%$key%'
GROUP BY class_tbl.class_name"

在使用公式器参数或查询字符串中的值 ($key( 时,请务必避免 SQL 注入!