2017-02-10 112 views
0

我有三個表在我的數據庫。學生,模塊和關係。關係表的每一行都包含一個學生ID和一個模塊ID(即它包含學生需要的模塊)。使用嵌套循環循環多個數據庫表?

我想通過關係表循環查找特定學生所需的所有模塊,然後打印出每個模塊的詳細信息(例如名稱和模塊代碼)。

我想用嵌套循環做到這一點,但內循環只運行一次並打印出第一個模塊。我認爲這是與我的while循環內的第二個SQL查詢有關,並且$m_id沒有得到每次迭代更新。這裏是我的代碼到目前爲止

<?php 
     include 'connect.php'; 
     $sql = "SELECT * FROM relations WHERE student_id = '1'"; 
     $result = $conn->query($sql); 
     if($result->num_rows > 0) { 
      while($row = mysqli_fetch_array($result)) { 
       $m_id = $row["module_id"]; 

       $sql = "SELECT * FROM modules WHERE module_id = $m_id"; 
       $result = $conn->query($sql); 
       if($result->num_rows > 0) { 
        while($row = mysqli_fetch_array($result)) { 
         echo $row["module_code"]; 
        } 
       } 
      } 
     } 
?> 

任何人都可以幫我解決這個問題嗎?

+1

提示:'INNER JOIN' –

回答

1

您可以使用INNER JOIN將某個特定學生的所有模塊放入一個查詢中,以此方式更改SELECT查詢。就像這樣:

SELECT * FROM modules 
INNER JOIN relations ON relations.module_id = modules.module_id 
WHERE relations.student_id = 1; 

這樣,它將把其與1的ID的學生有關係的所有模塊,假設這是你的願望,通過它的模塊搜索的學生。 然後你只需遍歷結果數組,並從你想要的模塊中獲取值。

+1

感謝@PedroChiiip,完美的工作。 –