Как я мог избежать использования MySQL-запроса в цикле While в PHP

У меня есть цикл while, который выводит список классов. В базе данных классов имя учителя определяется идентификатором учителей в базе данных пользователей.

Вот моя структура базы данных.

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.

Спасибо.

Вы можете использовать запрос соединения, чтобы получить всю необходимую вам информацию сразу. Затем в вашем приложении вы можете отсортировать его и отобразить соответственно. например

 SELECT Classes.class, Users.Name FROM Classes JOIN Users on Classes.Teacher = Users.ID 

Вы хотите использовать JOIN в mysql.

 SELECT * FROM class c JOIN user u ON u.ID = c.TEACHER 

Вы можете использовать JOIN в своем первоначальном запросе.

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

это вернет все столбцы из класса, а также столбец совпадающих имен преподавателей от пользователя, все в одном запросе.