mysql_num_rows到php数据对象

时间:2013-01-10 18:16:34

标签: php mysql pdo

我很困惑将我的代码从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;

1 个答案:

答案 0 :(得分: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 +多个相册查询。然后,您将遍历结果集以获取所需的数据。