我有一个艺术家页面,应该显示特定艺术家发行的专辑。
我正在连接两个表来完成此任务。该关系是artist_name
。 artist
表和 albums
表具有不同的 ID。
不幸的是,艺术家页面显示数据库中的所有专辑照片,而不是仅与艺术家相关的照片。
我的想法是使用 $_GET
方法来获取艺术家姓名,当用户单击链接访问该艺术家的页面时,该姓名将包含在 URL 中。但显然,这是行不通的。
这是我的脚本:
$artist_name = $_GET['artist_name'];
//Query the database to show the albums
$albums = "SELECT artist.artist_name,albums.artist_name,albums.photo,albums.album_title
FROM artist,albums
WHERE artist.artist_name=albums.artist_name
ORDER BY year_released ASC";
$q = $db->query($albums);
$q->setFetchMode(PDO::FETCH_ASSOC);
html:
<?php while ($r = $q->fetch()): ?>
<span class="margin-two album">
<img src="http://mywebsite.com/albums/<?php echo $r['photo']; ?>" alt="picture of the album <?php echo $r['album_title']; ?> by <?php echo $r['artist_name']; ?>" title="<?php echo $r['album_title']; ?>" \>
</span>
<?php endwhile; ?>
如何为每个艺术家输出正确的专辑?
最佳答案
使用以下查询,左连接到albums
表。
$artist_name = $_GET['artist_name'];
//Query the database to show the albums
$albums = "SELECT artist.artist_name,albums.artist_name,albums.photo,albums.album_title
FROM artist,albums
LEFT JOIN
albums on albums.artist_name = artist.artist_name
WHERE artist.artist_name=$artist_name
ORDER BY year_released ASC";
$q = $db->query($albums);
$q->setFetchMode(PDO::FETCH_ASSOC);
如果您有任何问题,请告诉我。
关于php - 如果 ID 不是关系型,如何显示 MYSQL Join 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417944/