查询数据库以显示来自同一标签的所有图像

时间:2015-06-29 11:46:12

标签: php mysql sql

我有页面显示来自数据库的图像,图像下面是每个图像的标签。 数据库表是: 图像

image_id
image_name
etc

标签

tag_id
tag_name

tags_images

tag_id
image_id

在我选择的图像下,像这样显示它们

<li>Tags: </li>';
            $tags = $pdo->prepare("SELECT * FROM `images` p LEFT JOIN `tags_image` tp ON p.image_id = tp.image_id LEFT JOIN `tag` t ON tp.tags_id = t.tag_id WHERE p.image_id = ?");
            $tags -> bindParam(1, $row['image_id'], PDO::PARAM_INT);
            $tags -> execute();
            foreach($tags as $tag) {
                echo '<li><a href="tagsPreview.php?tag_id='.$tag['tag_id'].'">'.$tag['tag_name'].'</li>';  
            }

现在我想要当用户点击tagsPreview.php页面上的href链接来加载具有此标记的所有图像时。我试过的是

if(isset($_GET['tag_id']) && is_numeric($_GET['tag_id'])){
                    $tag_id = $_GET['tag_id']; {                         

$result = $pdo->prepare("SELECT * from `images` i 
                         INNER JOIN `tags_image` ti ON i.image_id = ti.image_id 
                         WHERE ti.tags_id = ? ASC LIMIT 20");

$result -> bindParam(1, $row['tag_id'], PDO::PARAM_INT);
$result -> execute();
foreach ($result as $row)
{
    // images
}

问题是我得到没有图像的空白页面。

1 个答案:

答案 0 :(得分:2)

替换它:

$result -> bindParam(1, $row['tag_id'], PDO::PARAM_INT);

$result -> bindParam(1, $tag_id, PDO::PARAM_INT);