如何打破 sql 查询无限循环



运行此选项会输出 100 到 165 次的每个结果。似乎是一个无限循环,但我不知道如何打破它或识别问题。任何帮助,不胜感激。

$sql = "SELECT *
FROM timetable t, class c, room r
WHERE c.id = t.class AND t.week = '".$_GET['week']."' AND t.id = '".$_GET['class']."' 
ORDER BY CASE
WHEN Day = 'Sunday' THEN 1
WHEN Day = 'Monday' THEN 2
WHEN Day = 'Tuesday' THEN 3
WHEN Day = 'Wednesday' THEN 4
WHEN Day = 'Thursday' THEN 5
WHEN Day = 'Friday' THEN 6
WHEN Day = 'Saturday' THEN 7
ELSE Day
END ASC, Hour;
";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "Timetable of the class: ".$_GET['class']."";
echo "<table>";
while($row = $result->fetch_assoc()) {

echo "<tr>";
echo "<td>" . $dan . "</td><td>". $row["ura"] . "</td><td>". $row["razred"] . "</td><td>" . $ucilnica . "</td><td>" . $row["ucitelj"] . "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
}
?>

您缺少指向room表的链接,因此它为每个组合选择所有房间。

SELECT *
FROM timetable t, class c, room r
WHERE r.? = ?.? AND c.id = t.class AND t.week ...

您也可以尝试新的 JOIN 表示法...

SELECT *
FROM timetable t
JOIN class c ON c.id = t.class
JOIN room r ON ?
WHERE t.week...

我还建议查看准备好的语句以防止SQL注入等。

最新更新