while循环不显示所有值

时间:2014-11-02 07:30:11

标签: php while-loop

我遇到了这个奇怪的问题。 有七位管理员:darth,jane,luke,najin,root,sam和sydney。

CODE:

    <table>
          <tr>
            <th style="text-align: left; width: 200px;">Username</th>
            <th colspan="2" style="text-align: left;">Action</th>
          </tr>
        <?php 

            $sql = "SELECT * FROM admins ORDER BY Admin_Username ASC";
            $result = mysqli_query($connection, $sql);
            $admin = mysqli_fetch_assoc($result);

            while($admin = mysqli_fetch_assoc($result)) { 
            ?>
          <tr>
            <td><?php echo ($admin["Admin_Username"]); ?></td>
            <td><a href="edit_admin.php?id=<?php echo urlencode($admin["id"]); ?>">Edit</a></td>
            <td><a href="delete_admin.php?id=<?php echo urlencode($admin["id"]); ?>" onclick="return confirm('Are you sure you want to delete this admin?');">Delete</a></td>
          </tr>
        <?php     
} 
?>
</table>

如果我使用ASC订单,第一个管理员,darth不会显示在循环中,如果我使用DESC订单,则最后一个管理员,悉尼不会显示。 这可能是什么问题?

5 个答案:

答案 0 :(得分:4)

摆脱第一条$admin =行。

你的循环将获取所有这些;你不需要单独获取第一个(如果这样做就是跳过它,因为你的循环会在第一个被写出之前立即获取第二个)。

答案 1 :(得分:3)

删除此行

 $admin = mysqli_fetch_assoc($result);//You already fetching the first result here

答案 2 :(得分:2)

您在$admin = mysqli_fetch_assoc($result);循环之前对while进行了冗余调用,这将导致您跳过结果的第一行。只需删除它就可以了。

答案 3 :(得分:2)

    <?php 

            $sql = "SELECT * FROM admins ORDER BY Admin_Username ASC";
            $result = mysqli_query($connection, $sql);    
            while($admin = mysqli_fetch_assoc($result)) { 
            ?>
          <tr>
            <td><?php echo ($admin["Admin_Username"]); ?></td>
            <td><a href="edit_admin.php?id=<?php echo urlencode($admin["id"]); ?>">Edit</a></td>
            <td><a href="delete_admin.php?id=<?php echo urlencode($admin["id"]); ?>" onclick="return confirm('Are you sure you want to delete this admin?');">Delete</a></td>
          </tr>
    <?php     
    } 
    ?>

答案 4 :(得分:0)

$admin = mysqli_fetch_assoc($result);

这必须在while循环中所以你可以在

时去除/删除上面的旧值