PHP 内爆以检索单独的 ID


PHP Implode to retrieve separate ID's?

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

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

我在group_concat遇到的麻烦是,艺术家 1、艺术家 2、艺术家 3 的索引.php链接(如下)现在显示艺术家.php?id=1,2,3。 我需要分隔 ID,以便将每个 ID 链接到单独的艺术家.php对于每个艺术家,请使用如下链接:

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

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

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

任何帮助将不胜感激。提前谢谢。

使用

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 fetch 模式,以便您可以通过查询中的名称引用列 - 这将使您的代码更加清晰。

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

<a href="artist.php?id='.$row[3].'">'.$row[4].'</a>
$whatiwant = $_GET['id'];
$whatiwant = explode($whatiwant, ',')

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

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

希望对您有所帮助!