1

ウェブサイトのすべてのメンバーをインデックスページに一覧表示したいのですが、方法がわかりません。whileループを試してみましたが、整数よりも小さいと言うだけなので、無限ループになります。

これが私のコードです:

<?php
$profile_query = "SELECT * FROM `members` ORDER BY `join_date` DESC";
$profile_query_check = $db->prepare($profile_query);
$profile_query_check->execute();
$ac = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
if(!empty($ac)) {
$_loader = true;
$fetch = $profile_query_check->fetch (PDO::FETCH_ASSOC);
$profile_name = $fetch['profile_name'];
$profile_photo = $fetch['profile_photo'];
$profile_id = $fetch['profile_id'];

while($profile_id <1000) { // this is the place i want to change to make it working well :)
?> 
<li><a href="http://mywebsite.com/profiles/<?php echo $profile_id;?>">  
<img src="http://mywebsite.com/photos/<?php echo $profile_photo;?>" />
<br>  
<?php echo $profile_name; ?></a></li>  
<?php } ?>

私が言ったように、その印刷はうまくいきますが、ページが狂って無限ループが始まり、ブラウザが狂ってしまいます:)すべての行をフェッチして停止する場所で印刷を停止するmysqlまたはphp関数をここに適用できますか?またはそのようなもの

アドバイスありがとうございます。

よろしく

編集:マイケルはエラーを修正しましたが、今回は最後のプロファイルを除くすべてのプロファイルが表示されていますが、どうすればそれも修正できますか?

4

1 に答える 1

1

次のように変更する必要があると思います。

while ($fetch = $profile_query_check->fetch (PDO::FETCH_ASSOC)) {
    if ($fetch == NULL OR $fetch["profile_id"] > 1000) {
        break;
    }


    $profile_name = $fetch['profile_name'];
    $profile_photo = $fetch['profile_photo'];
    $profile_id = $fetch['profile_id'];

    //echo the profile info
}

それ以外の場合、現在の方法では、返されたデータから1行のみをフェッチするため、profile_idは常に<1000になります(最初に返されたデータが1000より大きい場合を除く)。

于 2012-08-29T23:08:29.877 に答える