php - 如果 ID 不是关系型,如何显示 MYSQL Join 的内容

标签 php mysql join

我有一个艺术家页面,应该显示特定艺术家发行的专辑。

我正在连接两个表来完成此任务。该关系是artist_nameartist 表和 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/

相关文章:

php - laravel-选项所有值

mysql - 寻找产品的最早历史条目我应该加入历史/产品表还是在产品表中存储值?

PHP:为什么 exec() 不返回输出?

python mysql 获取查询

3 个表上的 MySQL INNER/LEFT JOIN,其中第 3 个表中的记录可能不存在

mysql - 3 个表之间的循环连接(或嵌套连接)

sql - 子查询与连接

javascript - 在 PHP 中使用 javascript 更改页面标题 'if'

php - IMAP/PHP 中的 Thunderbird "Tags"

php - 如何使用 "tail"将字符串转换为 float ?