从嵌套数组中选择 SQL


Make SQL selection from nested arrays

我正在尝试根据从先前选择中获得的嵌套数组进行选择。

这是我做出第一个选择的地方:

$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;

这将获取以下格式的所有课程 ID:

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

我希望能够访问这些 ID 以从不同的表中选择信息。我首先尝试使用 for 循环根据 ID 获取所有"课程信息"。

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;
    }

任何帮助将不胜感激!

您可以使用一个SQL查询来完成此操作,从而消除所有这些循环

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

可以在查询中使用相同的数组,可以使用内爆函数

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

只要您更改输出格式

Array (6, 7)

其中 6 和 7 是课程的 ID

同样在您的代码中,重写 var 时出错$_SESSION['studentcourseinfo'] = $row;这些一次覆盖相同的变量