为了账号安全,请及时绑定邮箱和手机立即绑定

获取电影类型的输出

获取电影类型的输出

PHP
天涯尽头无女友 2021-11-26 16:39:43
我正在编写一个程序来输出具有该类型的电影。sample databaseMovie        movie_id , title (1, snitch)genre        genre_id , genre (1, Action)(2, Animation)(3, Drama)(4, Crime )movie_genre  movie_id, genre_id (1,1)(1,3)(1,4)这是我的代码  <?php   $stmt = $pdo->query("  SELECT *    FROM movie, genre, movie_genre WHERE movie.movie_id =    movie_genre.movie_id AND genre.genre_id = movie_genre.genre_id And    movie.name='snitch'  ");   while ($row = $stmt->fetch()){   $title= $row['title'];   $genre= $row['genre'];   ?>        <h1> <?php echo $title ; ?> </h1>            <h1> <?php echo $genre ; ?> </h1>    <?php } ?>我得到的输出是“Snitch Action Snitch Drama Snitch Crime”但我想要“告密行动戏剧犯罪”
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

每个 $row 包含标题(“Snitch”)和一种类型。你循环这个,所以它与每一行的标题相呼应。试试这个替换:


   $oldtitle = $title = '';

   while ($row = $stmt->fetch()){


   $title= $row['title'];

   if ( $oldtitle == $title ) $title = '';

   else  $oldtitle = $title;


   $genre= $row['genre'];

   ?>

        <h1> <?php echo $title ; ?> </h1>

            <h1> <?php echo $genre ; ?> </h1>


   <?php } ?>


查看完整回答
反对 回复 2021-11-26
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您可以使用PDO 的常量和方法fetchAll()。试试PDO::FETCH_GROUP。它将按第一列对查询中的所有结果进行分组。在这种情况下,我只获取 2 列title和genre. 结果是:


Array ( 

    [snitch] => Array ( 

        [0] => Action 

        [1] => Drama 

        [2] => Crime 

    ) 

)

我将它与它混合PDO::FETCH_COLUMN以在我的子数组中只获取一列,但您不需要这样做,您可以获得整个数组。


$stmt = $pdo->query("SELECT title, genre

    FROM movie, genre, movie_genre 

    WHERE movie.movie_id = movie_genre.movie_id 

        AND genre.genre_id = movie_genre.genre_id 

        And movie.title='snitch'

");

$data = $stmt->fetchAll(\PDO::FETCH_GROUP|\PDO::FETCH_COLUMN);

foreach($data as $title => $genres){

    echo '<h1>'.$title.'</h1>';

    foreach($genres as $genre){

        echo '<h2>'.$genre.'</h2>';

    }

}


查看完整回答
反对 回复 2021-11-26
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

在选择部分您没有提到任何字段。你可以用 2 种方式。


SELECT movie.movie_id , movie.title , genre.genre

FROM movie, genre, movie_genre WHERE movie.movie_id = 

movie_genre.movie_id AND genre.genre_id = movie_genre.genre_id And 

movie.name='snitch'

或者


SELECT movie.movie_id , movie.title , genre.genre

FROM movie 

INNER JOIN movie_genre ON movie.movie_id = movie_genre.movie_id

INNER JOIN genre ON genre.genre_id = movie_genre.genre_id 

WHERE movie.name='snitch'


查看完整回答
反对 回复 2021-11-26
  • 3 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信