Php-rowspan在同一行显示数据库中的所有记录

Php-rowspan在同一行显示数据库中的所有记录,php,sql,html-table,Php,Sql,Html Table,rowspan有问题,它将数据库中的所有数据打印到一行中! 即使是不同id的那个! 输出应该是课程名称和所有参加该课程的学生,将我的代码仅用于数据库中的第一个课程名称,并将其与数据库中的所有学生名称一起打印出来 我的代码是 <h2> List of course Name with students names</h2> <?php include('../connect.php');

rowspan有问题,它将数据库中的所有数据打印到一行中! 即使是不同id的那个! 输出应该是课程名称和所有参加该课程的学生,将我的代码仅用于数据库中的第一个课程名称,并将其与数据库中的所有学生名称一起打印出来

我的代码是

                      <h2> List of course Name with students names</h2>

<?php


        include('../connect.php');
        $id=$_SESSION['login_user'];


        $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
                FROM course AS c
                INNER JOIN student AS s
                ON s.CourseID = c.CourseID"; 

        $result = mysql_query ($sql, $connection); 


          echo "<center>";

        echo "<table>";
        echo "<tr> <th>Course Name</th> <th> Student Name</th>  </tr>";

        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
                // echo out the contents of each row into a table
               echo "<tr>";

                echo '<td>' . $row['CourseName'] . '</td>';
                echo "<td rowspan='' >" .$row['Studentname'] . "</td>";


                echo "</tr>";


        }
        echo "</table>"; 
         echo "</center>";



?>
学生

Studentname var(30)
StudentID   int(7) 
CourseID    int(7)  

问题在于您的查询。您没有使用
分组依据
,这是指定聚合数据分组依据的列所必需的(因此命名)

当然,如果您需要列出没有人参加的课程,您必须使用
左连接
,而不是
内部连接

    $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
            FROM course AS c
            LEFT JOIN student AS s ON s.CourseID = c.CourseID
            GROUP BY C.CourseName "; 
至于
rowspan=''
部分,我不明白这一点。没有道理。或者

  • 不要把它放在那里,用普通的
  • 如果需要单元格跨越多行,请使用正确的值,如
    $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
            FROM course AS c
            INNER JOIN student AS s ON s.CourseID = c.CourseID
            GROUP BY C.CourseName "; 
    $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
            FROM course AS c
            LEFT JOIN student AS s ON s.CourseID = c.CourseID
            GROUP BY C.CourseName ";