1

我在将我的代码从 mysql * 转换为 php 数据对象时感到困惑。我有一个相册,里面有一张照片,我希望该相册的第一张照片成为相册的封面图片。我知道如何在我的 sql 中做到这一点,但我现在遇到了 pdo 的问题。这是我的代码:

        $sqlAlb="Select album_id,album_name from albums";
        $resAlb=$db->prepare($sqlAlb);
        $resAlb->execute();
        $strAlb="";
            while($rowAlb = $resAlb->fetch(PDO::FETCH_ASSOC)){
            $rs=$db->prepare("select COUNT(*) from gallery where album_id=".$rowAlb['album_id']);
            $rs->execute();
            $num_rows=$rs->fetchColumn();
            $dset=$rs->fetch(PDO::FETCH_ASSOC);
            if($rs!=0){
            $strAlb.="<article class='one-third column' data-categories='sermons people'>";
            $strAlb.="<div class='project-thumb'><div class='bordered'>";
            $strAlb.="<figure class='add-border'>";
            $strAlb.="<a class='single-image picture-icon' rel='gallery' ><img src='uploads/photos/".$dset['pic_img']."' alt='' /></a>";
            $strAlb.="</figure>";
            $strAlb.="</div></div></article>";
            }
            }
                echo $strAlb;
4

1 回答 1

0

你没有具体说明你遇到了什么问题,但我猜你只是没有从查询中得到你想要的数据。看来您正在查询计数值,然后尝试将该值用作图像的 href 属性的一部分,除非您的图像以非常特定的方式编号,否则这可能不起作用。

就我个人而言,我会在您的图库中添加一个特定的 tintyint(类似布尔值)字段,以专门指示哪个图像是封面图像,而不是依赖于某种排序顺序,这可能无法根据您查询表格的方式来保证。然后,我将使用一个查询加入专辑和画廊表来获取您需要的信息,如下所示:

SELECT a.album_id, a.album_name, g.image_filename  <-- or whatever your filename field is
FROM albums AS a
INNER JOIN gallery AS g ON a.album_id = g.album.id
WHERE g.is_cover = 1

然后,您可以在单个查询中获取所需的所有数据,而不是 1+ 数量的专辑查询。然后,您将遍历结果集以获取所需的数据。

于 2013-01-10T18:34:00.830 回答