您需要进行更多研究才能获得完整的帮助。我建议你做一些谷歌搜索并阅读这样的文章:
http://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/
[编辑]
感谢您花时间编辑您的问题并进行必要的更改:
示例数据库模式
类别表
CATEGORY_ID int auto_increment (11) (primary key)
CATEGORY
电影表:
ID int auto_increment (Primary Key)
TITLE,
DIRECTOR,
MOVIE_YEAR
CATEGORY_ID int(11) (Foreign Key)
现在你明白我所说的外键是什么意思了;上述架构基于您的问题和示例。我只重命名了年份列。我很小心可能与保留字冲突的字词或名称。我只是把它命名为MOVIE_YEAR。TITLE 字段不是唯一的。没有必要这样做。如果需要,为了防止重复,您可以查询数据库以查找匹配项。但是看到两部电影可能有相同的名字,他们的 id 应该把它们区分开来。
mysql
您不需要表中的两个自动增量列。首先创建类别表并加载类别的值。Id 列可以是自动增量,也可以不是。如果不是,您必须手动提供 ID。然后创建电影表。你正在做一对多的关系。意思是,一个类别可以匹配电影表中的许多电影。所以有 0 没有错误。该问题将由您的 PHP 脚本解决。该列可能设置为不为空,因此提供了默认值。
PHP 脚本
在 PHP 中,创建代码以将类别表中的值提取到下拉选择或可点击链接之类的内容中,并将它们传递给隐藏的表单元素。使用 select 可能会更快(参见下面的示例)。添加新电影所需的 select 和其他表单元素将采用一个 html 表单。因此,当您提交表单时,它会将数据添加到电影表中。该数据将携带用户正在插入的 category_id。这将取代您现在拥有的 0。
创建选择下拉菜单
如果您将 category_id 列设置为不为空,0 会更快乐。没什么奇怪的。在更新期间,重复相同的过程。请注意,选择将具有特殊格式,如下所示:
<?php while($row = mysqli_fetch_assoc($connection, $recordset)){ ?>
<select name='category_id' id='categories_id'>
<options value='<?php echo $row['category_id'] ?>'><?php echo $row['category_name'] ?></option>
</select>
<?php } ?>
这些值应该来自您的数据库并填充选择菜单。这应该让你开始。因此,现在尝试使用您当前拥有的数据库在 PHP 端工作。如果您有 PHP 代码,您可以展示它,以便我们都对其进行调整。
忘了赞成票和反对票吧,我们不是在竞争。这叫声望。我们似乎有很多。:)
显示记录
显示是棘手的部分。在那里你需要一个加入。符合以下条件的东西:
$sql='SELECT * FROM movies LEFT JOIN category ON movies.category_id = category.id';
$recordset_all = mysqli_query($connection, $sql);
像这样的东西会给你所有的电影记录和类别的匹配记录。这样,您就可以拥有适用于所有电影的类别名称。而且由于您似乎没有列名冲突,所以一切都应该没问题。如果只想匹配行,去掉LEFT这个词,这样电影中没有category_id匹配外键的电影就不会被选中。
子标题
如果您打算在类别名称的子标题中加载行,您的情况会变得复杂。在这种情况下,您必须进行两次数据库选择并创建一个函数来调用和返回相应的电影。可能有更好的方法。如有必要,我们会在您到达该部分时解决该问题。