0

我正在开发一个调度系统,让学生能够与教师一起预订 php 和 mysql 课程。

有 3 个单独的表来保存数据,每个表都有自己唯一的 ID 学生 ID、课程 ID 和教师 ID。它们都是多对多关系。很多学生可以上很多课。很多老师可以上很多课。因此,有两个连接表将学生和教师链接到相同的课程,Lessons/Students 和 Lessons/Teachers。

我遇到的问题是我正在制作一个表格来输入新课程。我希望能够以相同的形式分配学生和教师。表格中的大部分数据直接发布到课程表中,这很容易(开始时间、结束时间、房间号等),但我在连接表上遇到了麻烦。

我正在提取可用学生和教师的列表,并打算根据他们的 ID 将它们输入到联结表中。我似乎无法弄清楚我应该如何在实际创建课程 ID 之前捕获它,因为我需要连接表的课程 ID,但课程甚至还没有创建。

所有 ID 都会自动递增。我能想到的唯一解决方案是返回最新的课程 ID 并加一。这是最佳做法吗?我觉得这可能会在以后引起问题。例如,在两个用户尝试同时创建课程的情况下,或者存在延迟并且在另一个课程之前创建了另一个课程,但他们都将相同的课程 ID 发布到联结表。

任何输入表示赞赏!谢谢

4

3 回答 3

1

当您插入课程记录时,您可以检索分配给它的 ID(因为您已经自动增加了它)。所以程序应该是先插入课程,返回插入的ID。将此返回的课程 ID 与学生 ID 和教师 ID 一起使用以插入联结记录。

// $db is the mysqli object that has been connected to your database

// Insert the lesson
if ($db->query("INSERT INTO .........."))
{
    $lessonID = $db->insert_id;

    // Insert the student and teacher junctions with $lessonID
}
于 2013-10-22T13:02:16.283 回答
0

您不必担心课程不存在,因为您以相同的形式发布所有内容。您只需在插入数据时控制您的逻辑。因此,您提交课程的数据以及教师列表和学生列表。在您的代码中,您必须首先插入课程(当然要控制可能发生的任何错误),并且使用课程的 ID,您可以插入教师和学生。正如之前在插入时的答案中所说,您可以拥有插入的ID。

于 2013-10-22T13:11:01.833 回答
0

如你所说

For example in situations when two users try to create lessons at the same time

如果发生这种情况,它不会产生任何问题,所以不要担心

于 2013-10-22T13:04:55.870 回答