我正在尝试根据从先前选择中获得的嵌套数组进行选择。
这是我做出第一个选择的地方:
$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;
这些一次覆盖相同的变量