2016-02-24 3 views
0

Я пытаюсь сделать выбор на основе вложенного массива, который я получаю из предыдущего выбора.Сделать выбор SQL из вложенных массивов

Вот где я сделать свой первый выбор:

$coursequery = " 
      SELECT 
       courseID 
      FROM enrollments 
      WHERE 
       studentID = '$userid' 
     "; 

     try 
     { 
      $stmt = $db->prepare($coursequery); 
      $result = $stmt->execute(); 
     } 
     catch(PDOException $ex) 
     { 
      die("Failed to run query: " . $ex->getMessage()); 
     } 

     $rows = $stmt->fetchAll(); 

      $_SESSION['studentcourses'] = $rows; 

Это получает все courseID находится в следующем формате:

Array ([0] => Array ([courseID] => 6) [1] => Array ([courseID] => 7)) 

, и я хочу, чтобы иметь возможность получить доступ к этим идентификаторам выбора информации из другой таблицы. Я начал с попытки использовать цикл for для захвата всей «информации о курсе» в зависимости от идентификатора.

for($i = 0; $i < $count; $i++) { 

    $coursequery = " 
      SELECT 
       * 
      FROM courses 
      WHERE courseID = '$studentcourses[$i]' 

     "; 

     try 
     { 
      $stmt = $db->prepare($coursequery); 
      $result = $stmt->execute(); 
     } 
     catch(PDOException $ex) 
     { 
      die("Failed to run query: " . $ex->getMessage()); 
     } 

     $row = $stmt->fetchAll(); 

      $_SESSION['studentcourseinfo'] = $row; 

    } 

Любая помощь будет принята с благодарностью за достижение этого!

+0

Пуск с MySQL 'JOIN'. –

ответ

1

Вы можете сделать это с одним SQL запросов, таким образом, устраняя все эти петли

SELECT 
    * 
FROM courses 
    INNER JOIN enrollments ON 
     enrollments.courseID = courses.courseID 
     AND enrollments.studentID = '$userid' 
WHERE 1 
0

вы можете использовать тот же массив в запросе, можно использовать implode функцию

$coursequery = "SELECT * FROM courses 
    WHERE courseID IN (" . implode(",", $studentcourses) . ");"; 

Пока вы изменить выход формат

Array (6, 7) 

где 6 и 7 будет идентификатором курсов

Также в вас коде есть ошибка в перезаписи вар $_SESSION['studentcourseinfo'] = $row; эти перезапись ту же переменную в то время

Смежные вопросы