我正在調度系統上工作的學生將能夠與教師在PHP和MySQL預訂課程。填充連接表
有3個單獨的表來保存數據,每個表都有自己獨特的ID studentID,lessonID和teacherID。他們都是多對多的關係。許多學生可以有很多課程。許多教師可以有很多經驗教訓。因此,有兩個聯結表將學生和教師連接到相同的課程,課程/學生和課程/教師。
我遇到的問題是我正在製作一個輸入新課程的表單。我希望能夠以相同的形式分配學生和教師。表格中的大部分數據直接發佈到課程表中,這很容易(開始時間,結束時間,房間號碼等),但我遇到了聯結表的問題。
我拉出可用學生和教師的列表,並打算根據他們的ID將他們輸入到聯結表中。我似乎無法弄清楚在實際創建之前如何捕捉課程ID,因爲我需要結合表的lessonID,但課程還沒有創建。
所有ID自動遞增。我能想到的唯一解決方案是返回最新的lessonID並加1。這是最佳做法嗎?我感覺這可能會在稍後導致問題。例如,在兩個用戶同時嘗試創建課程的情況下,或者存在延遲並且另一個課程在另一個課程之前創建的情況下,但他們都將相同的課程ID發佈到聯結表。
任何輸入讚賞!謝謝
對不起,我的php不是那麼好......我得到的邏輯,我能夠檢索lessonID提供我有第一個插入的教訓,但我不知道我是如何檢索數字從數據庫中分配給$ lessonID。 我不太明白「 - >」。什麼是insert_id? – Guy
當您執行查詢時,您的課程記錄將插入一個自動遞增的ID。這個生成的ID將被放入'insert_id'中。您可以在PHP中使用' - >'運算符來訪問類的實例中的成員/字段/變量。在這種情況下'$ db'是類「mysqli」的一個實例。通過執行'$ lessonID = $ db-> insert_id;'您將檢索插入到數據庫中的最後一條記錄的ID,在您的案例中,這將是您可以用來更新聯結表的課程的ID。 – Jonathon
我明白了。所有這些都是在PHP中預定義的?我不必設置或分配insert_id? – Guy