Няма да видите нищо в Films_Genres
таблица, докато изрично не вмъкнете нещо в нея. Референтната цялост чрез PK и FK не е за попълване на вашите таблици вместо вас.
Вашият MySql код за вмъкване на нов запис в Films_Genres
, ако това е нов филм, който отговаря на нов жанр, може да изглежда така
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 страна, за да получите новоприсвоен идентификатор за автоматично инкрементирано поле, използвайте $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');
Ето SQLPiddle демонстрация