PHP Implode检索单独的ID?

时间:2013-09-11 04:19:43

标签: php mysql sql

我希望有人可以提供帮助。我运行下面的查询,然后在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链接到每个艺术家的单独artist.php:

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

如何将ID和ARTIST NAMES分开,同时保持表格布局如何?我是否在此查询中使用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

非常感谢任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分: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>';

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

答案 1 :(得分: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, ',')

答案 2 :(得分:0)

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

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

希望有所帮助!