首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用mysql和php显示所有电影列表

使用mysql和php显示所有电影列表
EN

Stack Overflow用户
提问于 2018-06-06 02:19:38
回答 2查看 678关注 0票数 -3

我有一个数据库

代码语言:javascript
复制
-movie ( movie_id , title , year)
          1      , thor , 2017
          2      , deadpool,2018    
-genre ( genre_id , genre_name )
              1      , action
              2      , adventure
              3      , comedy    

-movie_genre ( movie_id , genre_id )
                     1     ,    1
                     1     ,    2
                     2     ,    2
                     2     ,    3

我的php代码是

代码语言:javascript
复制
<?php 
$info_query = mysql_query("
SELECT * 
  FROM movie
     , genre
     , movie_genre 
 WHERE movie.movie_id = movie_genre.movie_id 
   AND genre.genre_id = movie_genre.genre_id
")or die(mysql_error());
$info_count =mysql_num_rows($info_query);
while($info_row = mysql_fetch_array($info_query)){
    if ($info_count > 0){ ?>
        <?php echo $info_row['title'] ?>
        <?php echo $info_row['genre'] ?>
        <?php
    }  } 
?>

输出为

代码语言:javascript
复制
thor action thor adventure

我想要

代码语言:javascript
复制
thor acton adventure
deadpool adventure comedy
EN

回答 2

Stack Overflow用户

发布于 2018-06-06 05:22:06

代码语言:javascript
复制
<?php
$info_query = mysql_query("
    SELECT mv.movie_id, mv.title, gr.genre_name
    FROM movie_genre mg
    INNER JOIN movie mv ON mg.movie_id = mv.movie_id
    INNER JOIN genre gr ON mg.genre_id = gr.genre_id
")or die(mysql_error());

$info_count = mysql_num_rows($info_query);

if ($info_count > 0) {
    $movies = [];
    while ($info_row = mysql_fetch_array($info_query)) {

        if (!isset($movies[$info_row['movie_id']])) {
            $movies[$info_row['movie_id']] = ['title' => $info_row['title'], 'genres' => []];
        }

        $movies[$info_row['movie_id']]['genres'][] = $info_row['genre_name'];
    }

    foreach ($movies as $movie_id => $movie ) {
        echo $movie['title'] .' ';
        foreach ($movie['genres'] as $genre) {
            echo $genre . ' ';
        }
        echo "\n<br>";
    }
}
票数 -1
EN

Stack Overflow用户

发布于 2018-06-06 02:29:36

这个查询应该是有效的:

代码语言:javascript
复制
SELECT title, 
GROUP_CONCAT(genre_name) AS genre
FROM movie_genre 
JOIN movie ON movie.movie_id = movie_genre.movie_id 
JOIN genre ON genre.genre_id = movie_genre.genre_id 
GROUP BY title

然后在php中,如果你愿意,你可以用空格替换逗号,如下所示;

代码语言:javascript
复制
<?php 
echo $info_row['title'];
echo str_replace(',',' ',$info_row['genre']);
?>
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50706573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档