$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>';
}
这一遍又一遍地显示相同的1张图像。我有3组:婚礼,5分和杂项,每组有2张图片。它只显示无限次数1张图像的婚礼。
我做错了什么,如何解决?
答案 0 :(得分:0)
$photo->name
永远是真的。因此,如果你在while循环中使用它,你实际上是在说:
while(true){
// do this
}
请记住,只要指定的条件为真,while循环就会继续运行。
您应该使用if
语句。
if($photo->name){
// do this
}
答案 1 :(得分:0)
while($photo->name)
将重复,直到$photo->name
为假。因为在循环中没有任何东西可以改变它,它将永远是真的,因此循环将永远持续。
像Nishant所说,你想用if
语句替换它。
答案 2 :(得分:0)
while($ photo-&gt; name)正在进入无限循环,条件始终为true。你应该在这个循环中给出一个结束条件,否则你也可以去条件
if($photo->name)
答案 3 :(得分:-2)
试试这个..这个解决方案将为您提供所需的布局......
$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>';
}