我一直在开发一个运行以下查询的应用程序:
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()
在我爆炸以逗号分隔的流派列表时添加,但我想知道问题的根源。
基本上,当我手动运行查询时,类型显示正常,当它在应用程序中运行时,它显示双倍,而其余信息仍然显示正常。