MySQLデータベースに多対多の関係を作成しようとしています。私は3つのテーブル: Films
,Genres
およびFilms_Genres
を持っています。私はそれらを設定するには、次のコードを使用しています:FOREIGN KEYSとのMySQL多対多関係
CREATE TABLE Films
(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
Title VARCHAR(255)
),
CREATE TABLE Genres
(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
Name VARCHAR(255)
),
CREATE TABLE Films_Genres
(
film_id INT NOT NULL,
genre_id INT NOT NULL,
PRIMARY KEY (film_id, genre_id),
FOREIGN KEY (film_id) REFERENCES Films(id) ON UPDATE CASCADE,
FOREIGN KEY (genre_id) REFERENCES Genres(id) ON UPDATE CASCADE
)
をしかし、私はテーブルにいくつかの値を挿入しようとすると:私はFilms
テーブルに新しい映画を見ることができます
INSERT INTO Films (Title) VALUES ('$title')
INSERT INTO Genres (Name) VALUES ('$genre')
と新しいジャンルはGenres
ですが、 Films_Genres
テーブルは更新されません。新しい行はありません(phpMyAdminをチェックしています)。
私は間違っていますか?
PHPコードを貼り付けてください。そうしないと、解決できません。 '$ title'と' $ genre'が存在することを確認しましたか?など。 –
私は映画とジャンルの結果を表示することができます - 彼らは動作します。唯一の問題は、Films_Genresテーブルがすべての行を追加しないことです。 PHPはうまくいくようです。 mysqli_query($ con、$ sql)を使ってSQLコードを実行しています。 SQLは正しいのですか? – Sharkz
「Films_Genres」の接続が不足していることが懸念されています。そうであれば、その2つのレコードを自分で関連付ける必要があります。 –