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 (ブール値のような) フィールドを追加して、テーブルのクエリ方法に基づいて保証されない可能性のある並べ替え順序に依存するのではなく、どの画像がカバー画像であるかを具体的に示します。次に、album テーブルと gallery テーブルを結合する 1 つのクエリを使用して、次のような必要な情報を取得します。

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 回以上のアルバム クエリではなく、1 回のクエリで必要なすべてのデータを取得できます。次に、結果セットを反復処理して、必要なデータを取得します。

于 2013-01-10T18:34:00.830 に答える