通过php

时间:2016-08-26 17:45:47

标签: php mysql database

好的我是php开发的新手,所以我犯了一些错误,没有计划我的数据库刚启动,因为我对我的第一个项目非常兴奋,所以不要判断我......:D:D

这是我的主数据库 主数据库

enter image description here

这是我的电影数据库,

电影数据库

enter image description here

所以我首先创建了歌曲数据库并将数据存储在其中,之后我创建了电影数据库,而movie_id是电影数据库id的外键,因此在主数据库中添加外键的歌曲太多了,我想要一个可以在我的主数据库中插入外键的PHP脚本,

我创建了一个php脚本(实际上已经尝试了几个小时),但没有取消

我想 从歌曲数据库中获取movie_name 与电影数据库的movie_name匹配 如果两部电影都匹配 将movies数据库的id插入歌曲数据库的movie_id(外键)

   <?php
    require_once ('../inc/db.php') ?>    

 <?php

     $lang_query = " SELECT * FROM songs";
     $query = "UPDATE songs SET movie_id = '$mov_id'";
     $lang_run = mysqli_query($conn, $lang_query);
     $mov_query = " SELECT * FROM movies";
     $mov_run = mysqli_query($conn, $mov_query);
     $mov_row = 1;
     $lang_row = 1;

     while ($mov_row = mysqli_fetch_array($mov_run))
      {
     $mov_name = $mov_row['movie_name'];
     $mov_id = $mov_row['id'];
     while ($lang_row = mysqli_fetch_array($lang_run))
    {
    echo $movie_name = $lang_row['movie_name'];
    $movie_id = $lang_row['id'];
    if ($movie_name == $mov_name)
        {
        mysqli_query($conn, "UPDATE songs SET movie_id = '$mov_id' where id = '$movie_id'");
        }
    }
} ?>

请帮助我,谢谢:)

2 个答案:

答案 0 :(得分:0)

我认为你可以通过运行以下sql查询来实现它 -

update *songs* inner join *movies* on songs.movie_name=movies.movie_name set songs.movie_id=movie.id

答案 1 :(得分:0)

老实说,在您担心尝试根据当前架构添加外键之前,您确实需要重新访问架构并规范化数据。为什么在两个表中有相同的电影名称和电影slug字段?为什么电影,歌曲,歌手,演员,类别等都在同一张桌子上?这些东西可能都需要彼此相关的表。

在构建数据库时,请考虑现实世界中的术语,因为您可能希望应用程序用户能够在真实世界意义上与数据库中的数据进行交互。对我来说,您可能至少需要以下表格:

movies
songs
movies_to_songs (join table to express many-to-many relationship)
actors
movies_to_actors (many-to-many)
editors
movies_to_editors (many-to-many)
movie_categories
movies_to_movie_categories (if you want to treat this as many-to-many)
singers
songs_to_singers (many-to-many)
youtube_videos (a separate table where you could store all video data)

每个表都有其他列(属性),这些列仅适用于表中包含的单个实体。因此,例如电影表可能看起来像

id (primary key)
name
slug
image
language
release_date
youtube_id (reference to listing on youtube_videos table)

你可能有一个演员表,如:

id (primary key)
name
... (sex, birthday, etc.)

一个只有两列复合主键的movies_to_actors表(即组合必须是唯一的)

movie_id (references primary key id in movie table)
actor_id (reference primary key id in actors table)

等各种各样的表格。

请记住考虑一个对象与另一个对象的真实世界关系以及每个对象的真实世界属性(列)。