首页 > 解决方案 > while 循环第一次迭代不起作用吗?

问题描述

我有一个嵌套的 do while 循环。选项输入中的第一个循环是空白的,下拉菜单中没有选项。第一个循环之后的所有其他循环都可以正常工作。我不知道为什么第一个是空白的,任何帮助都将不胜感激。

<div class="col-md-12">
<h1 align="center"><a href="images.php">&lt;Back</a> - Current Photos  in <?
echo $row_titles['title']; ?></h1>
<?php if ($totalRows_photos > 0)
{
    do
    { ?>
  <div class="col-md-3" style="height:350px;overflow:hidden;"><img 
src="../contentimages/<?php echo $row_photos['filename']; ?>" class="img- 
responsive" style="max-height:225px;" /><br />
<? if ($row_photos['catid'] == 1)
        {
            echo "Commercial";
        }
        else
        {
            echo "Residential";
        } ?> 
  |  <a href="images.php?id=<?php echo $row_photos['id']; ? > & amp;
        action = remove">Delete</a><br />
<form name="moveit" action=" < ? phpecho $editFormAction; ?>" method="POST" 
id="moveit"><select name="folder">
  <?php
        do
        {
?>
  <option value="<?php echo $row_folders['id'] ?>"<?php if (!(strcmp($row_folders['id'], $row_photos['project_id'])))
            {
                echo "selected=\"selected\"";
            } ?>><?php echo $row_folders['title'] ?></option>
  <?php
        }
        while ($row_folders = mysql_fetch_assoc($folders));
        $rows = mysql_num_rows($folders);
        mysql_data_seek($folders, 0);
        $row_folders = mysql_fetch_assoc($folders);
?>
</select><input name="Move" type="submit" value="Move" />
<input name="hiddenField" type="hidden" id="hiddenField" value="<?php echo $row_photos['id']; ?>" />
<input type="hidden" name="MM_update" value="moveit" />
</form></div>
  <?php
    }
    while ($row_photos = mysql_fetch_assoc($photos));
}
else
{
    echo "<h3 
align=\"center\">No photos are found!</h3>";
} ?></div>

标签: phploopsdo-while

解决方案


do while 循环的第一次迭代从$row_foldersand返回空白值$row_photos的原因是因为在第一次迭代完成之前没有为这些变量分配值(在while语句中)

要修复它,您可以先分配变量,或者(更常见的做法)只是使用while循环。

首先定义变量:

$row_folders = mysql_fetch_assoc($folders);
do
{
    // Your code here
}
while ($row_folders = mysql_fetch_assoc($folders));

或者只是使用一个while循环

while ($row_folders = mysql_fetch_assoc($folders))
{
    // Your code here
}

推荐阅读