Php 学生和班级的SQL语句联接

Php 学生和班级的SQL语句联接,php,sql,database,Php,Sql,Database,我试图创建一个页面,让学生可以查看老师为他们的班级设置的家庭作业。对于我现在的查询,它没有给我任何错误,但是它没有返回正确的类。相反,它似乎显示已添加的最新版本。这是我的SQL语句 我需要的是一个语句,它从登录的学生所关联的每个类中进行选择 $id= $_SESSION['id']; mysqli_query($conn, "SELECT * FROM class INNER JOIN student_class ON class.class_id=student_class.class_I

我试图创建一个页面,让学生可以查看老师为他们的班级设置的家庭作业。对于我现在的查询,它没有给我任何错误,但是它没有返回正确的类。相反,它似乎显示已添加的最新版本。这是我的SQL语句

我需要的是一个语句,它从登录的学生所关联的每个类中进行选择

$id= $_SESSION['id'];

 mysqli_query($conn, "SELECT * FROM class INNER JOIN student_class ON class.class_id=student_class.class_ID INNER JOIN student ON student.ID= student_class.class_ID WHERE tbluser_ID='$id' "); 
以下是我希望显示信息的方式

        <table width='80%' border=0>
        <tr bgcolor='#CCCCCC'>
            <td>ID</td>
            <td>Class Name</td>
            <td>Manage </td>
        </tr>
        <?php 
        //while($res = mysql_fetch_array($result)) 
        while($res = mysqli_fetch_array($result)) {         
            echo "<tr>";
            echo "<td>".$res['class_id']."</td>";
            echo "<td>".$res['classname']."</td>";

身份证件
类名
管理

引入表
student
的联接条件似乎不正确

我认为:

ON student.ID = student_class.class_ID 
应该是:

ON student.ID = student_class.student_ID 
新查询:

SELECT * 
FROM class c 
INNER JOIN student_class sc ON sc.class_id = c.class_id
INNER JOIN student s ON s.id = sc.student_id
WHERE s.tbluser_ID = :id
旁注:

  • 您确实希望使用准备好的语句,而不是将变量连接到查询字符串中;你可以看看原因和方法

  • 表别名通常使查询更易于阅读和维护

  • 通常,您希望避免选择*
;最好是枚举(并在需要时使用别名)希望查询返回的列


@omar请注意,GMB在此处使用了PDO的准备声明功能。在代码中也应该这样做。