-1

我希望有人能帮忙。我运行下面的查询,然后打印 HTML 表中的行,如下所示:

ARTIST 1, (Featuring) ARTIST 2, (and) ARTIST 3 
Song Title                                            YEAR       YT LINK

我在使用 group_concat 时遇到的问题是 ARTIST 1、ARTIST 2、ARTIST 3 的 index.php 链接(如下)现在显示 artist.php?id=1,2,3。我需要分隔 ID,以便使用如下链接将每个 ID 链接到每个艺术家的单独艺术家.php:

<a href="artist.php?id='.$row[3].'">'.$row[4].'</a>

我将如何拆分 ID 和艺术家姓名,同时能够保持表格布局的原样?我是否在此查询中使用 Implode?

SELECT r.release_name, r.release_year, r.release_yt,
group_concat( a.artist_id ) AS artist_ids,
group_concat( a.artist_name ) AS artist_names
FROM tbl_release_artists ra
JOIN tbl_releases r ON r.release_id = ra.release_id
JOIN tbl_artists a ON a.artist_id = ra.artist_id
GROUP BY r.release_year, r.release_name, r.release_yt
ORDER BY artist_names, r.release_year, r.release_name ASC

任何帮助将非常感激。提前致谢。

4

3 回答 3

1

采用

explode(',', $_GET['id']) 

这将返回一个 ID 数组

编辑:现在我明白了你的问题 -

$artist_ids = explode(',', $row[3]);
$artist_names = explode(',', $row[4]);

foreach($artist_ids as $index => $id)
    echo '<a href="artist.php?id='. $id .'">'. $artist_names[$index] .'</a>';

您应该真正使用 assoc 获取模式,以便您可以通过查询中的名称引用列 - 这将使您的代码更加清晰。

于 2013-09-11T04:26:35.370 回答
0

好的,很快,您的获取 url artist.php?id=1,2,3 是一个字符串,您希望它成为一个数组。你使用 EXPLODE()

<a href="artist.php?id='.$row[3].'">'.$row[4].'</a>

$whatiwant = $_GET['id'];
$whatiwant = explode($whatiwant, ',')
于 2013-09-11T04:26:05.603 回答
0

在您的 SQL QUERY 中,当您希望它们作为 PHP 中的单独 id 时,您将连接 ids。首先,您应该尝试通过省略“group_concat(a.artist_id) as artist_ids”并使用 a.artist_id 作为 artist_id 来连接 artis_id,如果您像 $row[4] 一样访问它,则第二部分(作为 artist_id)并不重要。

但是,如果您必须在 SQL QUERY 处连接,那么您可以使用其他答案中提到的 explode 。但是随后您需要添加更多逻辑来管理应将哪个 id 映射到哪个链接。

希望有帮助!

于 2013-09-11T04:32:56.570 回答