次のクエリを実行するアプリケーションに取り組んでいます。
SELECT m.*, GROUP_CONCAT(g.title) as genres
FROM movie m
INNER JOIN genre_movie gm ON gm.movie_id = m.id
INNER JOIN genre g ON gm.genre_id = g.id
WHERE m.imdb_id = '454876'
クエリ ブラウザーでクエリを実行するか、SSH 経由で直接クエリを実行すると、次の結果が返されます (例:)
私の PHP コードでは、次のようにしてジャンルをループします。
<?php $get = mysql_query($query); // $query is the above query ?>
<?php $movieInfo = mysql_fetch_assoc($get); ?>
<?php $genres = explode(",", $movieInfo['genres']); ?>
<?php foreach ($genres as $genre) { ?>
<li class="clear"><a><span class="value"><?php echo $genre; ?></span></a></li>
<?php } ?>
予想されるアウトは次のようになると予想されますが、
ドラマ, アドベンチャー
出力は次のとおりです。
ドラマ、ドラマ、ドラマ、アドベンチャー、アドベンチャー、アドベンチャー
私はそれを理解できないので、なぜこれが起こっているのか考えていますか?
PS: コンマ区切りのジャンルのリストを展開するときに追加するだけで回避できることはarray_unique()
わかっていますが、問題の原因を知りたいです。
基本的に、クエリを手動で実行すると、ジャンルが正常に表示されます.アプリケーションで実行すると、残りの情報は正常に表示されますが、二重に表示されます.