php - Group concat 双重结果

标签 php mysql

我一直在开发一个运行以下查询的应用程序:

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 运行查询时,它会返回以下结果(示例:)

enter image description here

在我的 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 } ?>

虽然预期输出是:

Drama, Adventure

输出是:

Drama, Drama, Drama, Adventure, Adventure, Adventure

我想不通,知道为什么会这样吗?

PS:我知道一个变通方法是在我展开以逗号分隔的流派列表时添加 array_unique(),但我想知道问题的根源。

基本上,当我手动运行查询时,类型显示正常,当它在应用程序中运行时,它显示两倍,而其余信息仍然显示正常。

最佳答案

您似乎忘记了 SQL 中的 GROUP BY 子句,因为它写入了重复的记录。

关于php - Group concat 双重结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14496403/

相关文章:

javascript - getElementsByClassName 从 php foreach 获取一个元素

php - XPATH - 选择节点范围

php - 如何从数据库中提取一篇包含多个变体的文章?

mysql - 标记记录共享字段值,其中所有字段值为空

MySQL 表主索引列上的外键索引

php - 使用 PHP 和 cURL 无需登录表单即可登录网站

php - 输入数组转换

php - 安全地使用 php : modifying user input to avoid security issues 中的 eval 函数

mysql - 如何在 mysql 搜索中加权日期新鲜度?

mysql - MySQL 更新语句是否太昂贵?