Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多个mysql表中获取数据并用PHP(arrray)显示_Php_Mysql - Fatal编程技术网

从多个mysql表中获取数据并用PHP(arrray)显示

从多个mysql表中获取数据并用PHP(arrray)显示,php,mysql,Php,Mysql,我有一个带桌子的电影数据库 电影表 数据表 人员表 字符表 模式表 电影表 =============================================== CODE : TITLE : DESCRIPTION YEAR ===================================================== 1 IRON MAN 3 xxxxx 2013 2 STAR WARS

我有一个带桌子的电影数据库

  • 电影表
  • 数据表
  • 人员表
  • 字符表
  • 模式表
  • 电影表

    ===============================================
    CODE : TITLE :        DESCRIPTION       YEAR
    =====================================================
    1      IRON MAN 3       xxxxx          2013
    2      STAR WARS        xxxxx          2013
    
    人员表

    ===============================================
    CODE : NAME:                 BIRTH_DATE
    =====================================================
    1      SHANE BLACK         1965:04:04 00:00:00
    2      ROBERT DOWNEY       1965:04:04 00:00:00
    3      Gwyneth Paltrow     1965:04:04 00:00:00
    4      Don Cheadle         1965:04:04 00:00:00
    
    字符表

    ===============================================
    PERSON  : NAME:             MOVIE
    =====================================================
    2      TONY STARK          1
    3      PEPPER POTTS        1
    4      Col. James Rhodes   1
    
    模式表

    ===============================================
    CODE : NAME : 
    =====================================================
    1      DIRECTOR 
    2      WRITER
    3      ACTOR
    4      CHARACTER
    
    数据表

    ===============================================
    CODE : MOVIE :     PERSON   MODE
    =====================================================
    1      1             1       1
    2      1             2       3 
    3      1             3       3 
    4      1             4       3 
    
    最后的答案是:

    ===============================================
    CODE : MOVIE TITLE :  DIRECTOR  :     ACTORS           CHARACTERS
    =====================================================
    1      IRON MAN 3     SHANE BLACK   Robert Downey Jr.   Tony Stark
                                        Gwyneth Paltrow     Pepper Potts
                                        Don Cheadle         Col. James 
    
    MySQL命令是:

    SELECT 
      movies.title,
      movies.year,
      persons.name,
      modes.name,
      persons.birth_date,
      characters.name
    FROM
      data
      INNER JOIN movies ON (data.movie = movies.code)
      INNER JOIN persons ON (data.person = persons.code)
      INNER JOIN modes ON (data.mode = modes.code)
      INNER JOIN characters ON (persons.code = characters.person)
      AND (characters.movie = data.movie)
    WHERE
      MOVIES.code = '1'
    
    SQL命令运行良好

    我对PHP代码有问题

    $movie_query = mysql_query("
    SELECT 
      movies.title,
      movies.year,
      persons.name,
      modes.name,
      persons.birth_date,
      characters.name
    FROM
      data
      INNER JOIN movies ON (data.movie = movies.code)
      INNER JOIN persons ON (data.person = persons.code)
      INNER JOIN modes ON (data.mode = modes.code)
      INNER JOIN characters ON (persons.code = characters.person)
      AND (characters.movie = data.movie)
    WHERE
      MOVIES.code = '1';");
    
    WHILE ($rows = mysql_fetch_array($movie_query ))
    { 
        $movie_code = $rows['movies'.'code'];
        $movies_title = $rows['movies'.'title'];
        $movies_year = $rows['movies'.'year'];
        $movies_date_add = $rows['movies'.'date_add'];
        $movies_tagline = $rows['movies'.'tagline'];
    
        echo "$movie_code<br>$movies_title<br>$movies_year<br>$movies_date_add<br>$movies_tagline<br>";
    }
    
    $movie\u query=mysql\u query(“
    挑选
    电影名称,
    电影节,
    人名,
    模式名称,
    个人出生日期,
    字符名
    从…起
    数据
    打开内部连接电影(data.movie=movies.code)
    内部连接人员(data.person=persons.code)
    内部连接模式打开(data.mode=modes.code)
    上的内部联接字符(persons.code=characters.person)
    和(characters.movie=data.movie)
    哪里
    MOVIES.code='1';”;
    WHILE($rows=mysql\u fetch\u数组($movie\u query))
    { 
    $movie_code=$rows['movies.'code'];
    $movies_title=$rows['movies.'title'];
    $movies_year=$rows['movies.'year'];
    $movies\u date\u add=$rows['movies.'date\u add'];
    $movies_tagline=$rows['movies.'tagline'];
    echo“$movie\u code
    $movies\u title
    $movies\u year
    $movies\u date\u add
    $movies\u tagline
    ”; }

    我的PHP代码有问题吗。。?(似乎SQL命令与MySQL语法不同)

    1您需要使用PDO而不是MySQL,请参阅上面的christian giupponi评论,以了解有关该命令的说明

    2您的sql语句中有一个“;”应该删除

    2查询结果不包括表名

    3除非选中,否则无法访问表中的数据,因此除非在sql中请求movies.code,否则$row['code']将不起作用

    4当您选择同名字段时,您需要重新分配它们,否则最终会出现错误

    $movie_query = mysql_query("
    SELECT 
        movies.code,
        movies.title,
        movies.year,
        persons.name as pname,
        modes.name as mname,
        persons.birth_date,
        characters.name as cname
    FROM
        data
        INNER JOIN movies ON (data.movie = movies.code)
        INNER JOIN persons ON (data.person = persons.code)
        INNER JOIN modes ON (data.mode = modes.code)
        INNER JOIN characters ON (persons.code = characters.person)
        AND (characters.movie = data.movie)
    WHERE 
        MOVIES.code = '1'
    ");
    
    WHILE ($rows = mysql_fetch_array($movie_query ))
    { 
        $movie_code = $rows['code'];
        $movies_title = $rows['title'];
        $movies_year = $rows['year'];
        $movies_date_add = $rows['date_add'];
        $movies_tagline = $rows['tagline'];
    
        echo "$movie_code<br>$movies_title<br>$movies_year<br>$movies_date_add<br>$movies_tagline<br>";
    }
    
    $movie\u query=mysql\u query(“
    挑选
    电影。代码,
    电影名称,
    电影节,
    persons.name作为pname,
    modes.name作为mname,
    个人出生日期,
    characters.name作为cname
    从…起
    数据
    打开内部连接电影(data.movie=movies.code)
    内部连接人员(data.person=persons.code)
    内部连接模式打开(data.mode=modes.code)
    上的内部联接字符(persons.code=characters.person)
    和(characters.movie=data.movie)
    哪里
    MOVIES.code='1'
    ");
    WHILE($rows=mysql\u fetch\u数组($movie\u query))
    { 
    $movie_code=$rows['code'];
    $movies_title=$rows['title'];
    $movies_year=$rows['year'];
    $movies\u date\u add=$rows['date\u add'];
    $movies_tagline=$rows['tagline'];
    echo“$movie\u code
    $movies\u title
    $movies\u year
    $movies\u date\u add
    $movies\u tagline
    ”; }

    祝你好运,请记住,如果你现在不使用PDO,你以后会因为它而受苦的

    在$movie\u查询中删除;并使用mysql以外的其他工具。启用
    错误报告(E\u ALL)
    并使用
    print\r($rows)
    查看字段名与循环中使用的字段名有何不同(您在PHP中连接了tablename和column)。@Mihai我理解删除“;”但“使用mysql以外的其他东西”?你是不是建议他换个数据库?为什么会有人投反对票?@mcgrailm他说的是mysqli,因为mysql的功能是不受欢迎的:@mcgrailm是的,我制定了错误的公式,使用mysqli或PDO。这在这个网站上几乎是一个回声,但应该重复,直到每个人都转储mysql api。