Films_Genres
には何も表示されません 明示的に何かを挿入するまでテーブル。PKおよびFKによる参照整合性は、テーブルにデータを入力するためのものではありません。
Films_Genres
に新しいレコードを挿入するためのMySqlコード 、新しいジャンルに対応する新しい映画の場合は、次のようになります
INSERT INTO Films (Title) VALUES ('Title1');
SET @film_id = LAST_INSERT_ID();
INSERT INTO Genres (Name) VALUES ('Genre1');
SET @genre_id = LAST_INSERT_ID();
INSERT INTO Films_Genres (film_id, genre_id) VALUES(@film_id, @genre_id);
php側で、自動インクリメントされたフィールドに新しく割り当てられたIDを取得するには、を使用します。 $mysqli->insert_id
。
これで、新しい映画を作成して一度に複数のジャンルに割り当てたい場合は、それを行うことができます
INSERT INTO Films (Title) VALUES ('Title2');
SET @film_id = LAST_INSERT_ID();
-- if you get ids of genre from your UI just use them
INSERT INTO Films_Genres (film_id, genre_id)
SELECT @film_id, id
FROM Genres
WHERE id IN (2, 3, 4);
INSERT INTO Films (Title) VALUES ('Title3');
SET @film_id = LAST_INSERT_ID();
-- if you names of genres you can use them too
INSERT INTO Films_Genres (film_id, genre_id)
SELECT @film_id, id
FROM Genres
WHERE Name IN ('Genre2', 'Genre4');
これが