php 用MYSQL在同一部电影中插入多个演员

55ooxyrt  于 2022-12-17  发布在  PHP
关注(0)|答案(4)|浏览(147)

我不知道该怎么问这个问题,我刚刚开始学习PHP和Mysql,我有很多麻烦做一些很容易的事情。
假设我在Mysql的演员和电影中有两个表。
演员有ID和NAME,电影也有相同的ID和NAME。
在本例中,假设我们的演员是1布拉德Pitt、2 Edward Norton和3 Jack Nicholson
这两部电影分别是《搏击俱乐部》和《十三罗汉》。
布拉德·皮特和爱德华·诺顿在《搏击俱乐部》里,布拉德·皮特在《十三罗汉》里,而杰克·尼科尔森没有出现在这些电影里。
我怎样才能把演员链接到我的Mysql数据库中的电影?我怎样才能用PHP显示他们?
我感谢任何帮助,我迷失在这一个!谢谢你的关注!

wbgh16ku

wbgh16ku1#

您可以使用JOINS执行此操作。

在一个简短的介绍中,让我们有另一个表relations。在这个表中,电影和演员是相关的。PRIMARY KEY将是两个ID的组合。

Actors Table
+----+----------------+
| ID |           NAME |
+----+----------------+
|  1 |      Brad Pitt |
|  2 |  Edward Norton |
|  3 | Jack Nicholson |
+----+----------------+

Movies Table
+----+--------------------+
| ID |               NAME |
+----+--------------------+
|  1 |         Fight Club |
|  2 | Ocean''s Thirteen. |
+----+--------------------+

现在我们可以有一个包含这两个ID的关系表。

+-------+-------+
| MOVIE | ACTOR |
+-------+-------+
|     1 |     1 |
|     1 |     2 |
|     2 |     1 |
+-------+-------+

这样,电影1将同时具有演员1和2。

SQL查询

CREATE TABLE Actors (`id` int, `name` varchar(255));

INSERT INTO Actors (`id`, `name`) VALUES
(1, 'Brad Pitt'),
(2, 'Edward Norton'),
(3, 'Jack Nicholson');

CREATE TABLE Movies (`id` int, `name` varchar(255));

INSERT INTO Movies (`id`, `name`) VALUES
(1, 'Fight Club'),
(2, 'Ocean''''s Thirteen.');

CREATE TABLE stars (`movie` int, `actor` int);

INSERT INTO RelationShip (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1);
yyyllmsg

yyyllmsg2#

在这种情况下,您具有多对多关系,这意味着,一个演员可能出现在许多电影中,而一部电影可能具有许多演员。
在这种情况下,您要做的是生成一个中间表,比如“电影_演员”,它应该有2列电影_ID和演员_ID
这是一个很好的起点
例如,如果你想知道某个演员的所有电影,你可以这样查询:

SELECT movies.name FROM movie_actor LEFT JOIN movies ON movie_actor.movie_id = movies.id
WHERE movie_actor.actor_id = (SELECT id FROM actors WHERE name = 'brad pitt')

下面是如何创建表CREATE TABLE MOVIE_ACTOR(movie_id int,actor_id int);

INSERT INTO MOVIE_ACTOR (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 2);

祝你好运!

dffbzjpn

dffbzjpn3#

您需要一个连接表ActorMovieMatch
这个表将有两个字段ActorIDMovieID,它们是其他表中主键ID的外键。
更新数据库时,您将更新此表,而不更新其他表。

wf82jlnq

wf82jlnq4#

首先,你需要建立你的表结构。这里有一个可能适合你。我把它们以图表的形式展示出来是为了可读性;你必须为所有这些创建MySQL语句。
首先,您的表类型:

Movie = ID,Title
Actor = ID,FirstName,LastName
StarredIn = ActorID,MovieID

接下来是表的值:

Movie
------------------
1|Fight Club
2|Ocean's Thirteen

Actor
-------------------
1|Brad|Pitt
2|Edward|Norton
3|Jack|Nicholson

StarredIn
---------
1|1
2|1

请注意您是如何简单地插入StarredIn中连接的实体的ID的。这是关系系统的核心和灵魂。数据分布在表中,通过ID连接。这允许您根据需要多次放置任何参与者。它还保护您免受名称更改之类的事情的影响,如果有一天BraddPitt决定要更改他的名称,ID仍然指向同一个实体(只需修改actor表)。
此外,虽然不是必需的,但您需要主键来确保不会添加任何重复项。我建议为Movie和Actor使用ID主键,为StarredIn使用复合主键(ActorID,MovieID)。
至于PHP部分;我建议阅读mysqli或PDO,因为它们告诉你如何将PHP连接到MySQL。这里有一些链接可以帮助你入门:
密码:http://php.net/manual/en/book.mysqli.php
PDO:http://php.net/manual/en/book.pdo.php

相关问题