【问题标题】:Why is this 1 image showing an infinite number of times?为什么这 1 张图片显示了无数次?
【发布时间】:2014-03-05 08:17:57
【问题描述】:
$pgroup = $Sys->db->query("SELECT dj_photo_group.photo_group, dj_photo.name FROM dj_photo_group, dj_photo WHERE dj_photo_group.photo_group = dj_photo.img_group ORDER BY dj_photo.img_group DESC");

while($photo = $pgroup->fetch_object()) {

    echo '<div class="photo_head">' . ucfirst($photo->photo_group) . '</div>';
    echo '<div class="photo_sub">';

    while($photo->name) {
        echo '<img src="photogallery/' . $photo->photo_group . '/' . $photo->name . '" />';
    }

    echo '</div>'; 
}

这是一遍又一遍地显示同一张图片。我有 3 组:Wedding、5points 和 Misc,每组有 2 张图像。它只会无限次显示包含 1 张图片的婚礼。

我做错了什么,我该如何解决?

【问题讨论】:

  • 因为$photo-&gt;name 总是正确的所以你永远不会退出第二个while循环,这被称为无限循环

标签: php database image oop mysqli


【解决方案1】:

$photo-&gt;name 始终为真。因此,如果您在 while 循环中使用它,您实际上是在说:

while(true){
    // do this
}

请记住,只要指定的条件为真,while 循环就会继续运行。

您确实应该改用if 语句。

if($photo->name){
    // do this
}

【讨论】:

    【解决方案2】:

    while($photo-&gt;name) 将重复直到$photo-&gt;name 为假。因为在循环中没有什么可以改变它,它永远是真的,所以循环永远继续下去。

    就像 Nishant 所说,您想用 if 语句替换它。

    【讨论】:

      【解决方案3】:

      while($photo->name) 正在进入无限循环,因为条件始终为真。您应该为此 while 循环添加结束条件,否则您也可以使用 if 条件

      if($photo->name)
      

      【讨论】:

        【解决方案4】:

        试试这个..这个解决方案将为您提供您想要的布局....

        $pgroup1 = $Sys->db->query("SELECT dj_photo_group FROM photo_group GROUP BY dj_photo_group");
        
        while ($photo1 = $pgroup1->fetch_object())
        {
        
        echo '<div class="photo_head">' . ucfirst($photo1->dj_photo_group) . '</div>';
        echo '<div class="photo_sub">';
        $pgroup2 = $Sys->db->query("SELECT name FROM dj_photo WHERE img_group = '$photo1->dj_photo_group'");
        
        while ($photo2 = $pgroup2->fetch_object())
        {
            echo '<img src="photogallery/' . $photo1->dj_photo_group . '/' . $photo2->name . '" />';
        }
        
        echo '</div>';
        }
        

        【讨论】:

        • 感谢所有回复。 if 仍然给我同样的结果。婚礼 -> 2 张图片,5 分 -> 2 张图片和其他 -> 2 张图片。它将每个图像放在一个单独的 div 中。婚礼、5 点和杂项各有 2 个图像我得到 6 个 div,每个 1 个图像我应该有 3 个 div(婚礼、5 分和杂项),3 个 div 中的每个显示 2 个图像。希望我解释得更好一点。这把我逼疯了XD。谢谢大家。
        • 我需要如何获取 1 组(婚礼)然后循环浏览该组中的图像名称,然后一旦完成,我需要转到下一组(5 点)并显示 2 图像那个div等等。
        • 哦好吧..我明白了..请检查我编辑的答案...@user3377300
        • 感谢您的回复 Nishant。如果其他人遇到此问题,此解决方案对数据库的查询较少,解决方案在forums.devnetwork.net/… 谢谢大家的帮助!!!
        • 点击链接 :p 它完全按照我想要的方式工作
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2021-02-13
        • 2023-02-14
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 2021-05-21
        相关资源
        最近更新 更多