【问题标题】:Make SQL selection from nested arrays从嵌套数组中选择 SQL
【发布时间】:2016-06-07 07:02:21
【问题描述】:

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

这是我第一次选择的地方:

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

    }

任何帮助都将不胜感激!

【问题讨论】:

  • 以mysql开头JOIN.

标签: php mysql sql arrays multidimensional-array


【解决方案1】:

你可以在查询中使用相同的数组,可以使用implode函数

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

只要改变输出格式

Array (6, 7)

其中 6 和 7 是课程的 ID

你的代码也有错误重写 var $_SESSION['studentcourseinfo'] = $row; 这些一次覆盖相同的变量

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多