4

我有一个输出类列表的while循环。在类数据库中,教师姓名由用户数据库中的教师 ID 确定。

这是我的数据库结构。

Classes Database
-----------------------------
ID       CLASS              TEACHER
1        product design     3

User Database
-----------------------------
ID       NAME
3        John Doe

因此,在列出我的课程时,我需要将“3”转换为“John Doe”。

这是我当前的代码:

<?php 
  $classdetails = mysql_query("SELECT * FROM class");
  while($class = mysql_fetch_array($classdetails)) {
    $marklist_class = $class['class'];
    $marklist_teacher = $class['teacher']; //This is a userid                                   

    //------Somewhere here i need to get the userid and look it up in the user database
    if($marklist_class=="") {

    } else {
      echo $marklist_class . ' ' . $marklist_teacher;}
    }
  }
?>

我知道只是将另一个 mysql 查询放在那里会降低性能并且不建议这样做,所以我将如何在不向 while 循环中添加查询的情况下查找每一行的用户数据库。

谢谢你。

4

3 回答 3

5

您可以使用连接查询来一次获取您需要的所有信息。然后在您的应用程序中,您可以对其进行排序并相应地显示。例如

SELECT Classes.class, Users.Name
FROM Classes JOIN Users on Classes.Teacher = Users.ID
于 2012-06-06T15:55:02.277 回答
1

您想在 mysql中使用JOIN 。

SELECT * FROM class c JOIN user u ON u.ID = c.TEACHER
于 2012-06-06T15:55:21.027 回答
0

您可以在初始查询中使用 JOIN。

Select c.id, c.class, c.teacher, u.name from class c join user u on u.id = c.teacher

这将在一个查询中返回 Class 中的所有列,以及 User 中匹配的教师姓名列。

于 2012-06-06T15:56:15.593 回答