PHP MYSQL检索数据分类

时间:2017-04-26 19:10:32

标签: php mysql mysqli

我的数据库中有一个像这样的表。

  **lecturerID**   **session**   **Notes**         **studentID**

      aaa             45             something       123
      bbb             exams          something       345
      aaa             lecture        something       234
      aaa             auditions      something        234
      bbb             sdfsdf         something      234
      ccc             werwe          something        234

现在我想要的是将我的数据分类为"讲义"。

例如:讲师id = aaa

sessions = 45,讲座,试镜。

笔记=某事,某事,某事

在此页面上,将显示有关所有会话的所有信息:讲授ID应仅出现一次。其余的,会话, 每个课程的学生详细信息,笔记,学生会有所不同。

2 个答案:

答案 0 :(得分:0)

我通常做的只是获取所有行,然后通过PHP数组对数据进行分类,如下所示:

$res = $db->query("SELECT * FROM table");

$lecturers = array();
while($line = $res->fetch_assoc()){
    if(!isset($lecturers[$line["lecturerID"]]))
        $lecturers[$line["lecturerID"]] = array();

    $lecturers[$line["lecturerID"]][] = $line;
}

讲师数组将包含子数组,其中包含属于讲座ID的行。

现在,您只需循环浏览它们并创建HTML输出或任何您想要的内容。

foreach($lecturers as $lecturerID => $rows){
    echo '<h1>Lecturer: '.$lecturerID.'</h1>';
    for($i=0;$i<count($rows);$i++){
        echo '<p>Session: '.$rows[$i]["session"].'</p>';
        echo '<p>Notes: '.$rows[$i]["Notes"].'</p>';
        ...
    }
}

答案 1 :(得分:0)

试试这个:

SELECT lecturerID, GROUP_CONCAT(DISTINCT session) as sessions, GROUP_CONCAT(DISTINCT notes) as notes, GROUP_CONCAT(DISTINCT studentID) as student_ids
FROM table  
GROUP BY lecturerID; 

来自:http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php