我希望有人可以提供帮助。我运行下面的查询,然后在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? p>
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
非常感谢任何帮助。提前谢谢。
答案 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应该映射到哪个链接。
希望有所帮助!