【发布时间】:2013-07-01 20:06:34
【问题描述】:
我正在尝试在我的 MySQL 数据库中创建多对多关系。我有三张桌子:
Films、Genres 和 Films_Genres。我正在使用以下代码来设置它们:
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
)
但是,当我尝试将一些值插入到表中时:
INSERT INTO Films (Title) VALUES ('$title')
INSERT INTO Genres (Name) VALUES ('$genre')
我可以在Films 表中看到新电影,在Genres 表中看到新类型,但是
Films_Genres 表没有更新 - 没有新行(我正在通过 phpMyAdmin 检查)。
我做错了什么?
【问题讨论】:
-
粘贴PHP代码,否则我们无能为力。您是否验证了
$title和$genre存在?等等。 -
我可以展示电影和流派的结果——它们有效。唯一的问题是 Films_Genres 表没有添加任何行。 PHP 看起来不错。我使用 mysqli_query($con, $sql) 来执行 SQL 代码。 SQL 是否正确?
-
所以我假设
Films_Genres中的连接缺失是您关心的问题。如果是这种情况,您需要自己关联这两条记录。
标签: php mysql sql foreign-keys many-to-many