2017-02-10 3 views
0

Ich habe drei Tabellen in meiner Datenbank. Studenten, Module und Beziehungen. Jede Zeile der Beziehungstabelle enthält eine Studenten-ID und eine Modul-ID (d. H. Sie enthält die Module, die ein Student annimmt).Schleifen durch mehrere Datenbanktabellen mit verschachtelter Schleife?

Ich versuche, die Relationstabelle durchzulaufen und alle Module zu finden, die ein bestimmter Student nimmt, und drucke dann die Details jedes Moduls aus (z. B. den Namen und den Modulcode).

Ich versuche dies mit einer verschachtelten Schleife zu tun, aber die innere Schleife läuft nur einmal und druckt das erste Modul aus. Ich denke, das ist etwas mit einer zweiten SQL-Abfrage innerhalb meiner While-Schleife zu tun und $m_id wird nicht mit jeder Iteration aktualisiert. Hier ist mein Code so weit

<?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"]; 
        } 
       } 
      } 
     } 
?> 

Kann mir jemand dabei helfen?

+1

Hinweis: 'INNER JOIN' –

Antwort

1

Sie könnten Ihre SELECT-Abfrage so ändern, dass ein INNER JOIN verwendet wird, um alle Module eines bestimmten Studenten in eine Abfrage zu bringen. Wie folgt aus:

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

Auf diese Weise würde es alle Module bringen, die eine Beziehung mit einem Schüler der ID 1 haben, vorausgesetzt, es ist der Student Sie durch seine Module suchen wünschen. Dann würden Sie nur durch das Ergebnis-Array iterieren und die Werte von den Modulen erhalten, die Sie wollen.

+1

Danke @PedroChiiip, das hat perfekt funktioniert. –

Verwandte Themen