php中的While循环无法正常工作

php中的While循环无法正常工作,php,while-loop,Php,While Loop,While循环仅显示最后一个条目 现在,只需打印一次表行,并使用该行的最后一个值。您的循环所做的只是将值分配给$ID、$User和$Password,每个循环传递只会覆盖旧值。要解决这个问题,需要将echo语句移动到循环体中 这将允许您在每次迭代中打印当前值,而不是仅打印最后一次。这是你想要的代码 <table border="5" bgcolor="white" width="300" align="center"> <tr> <th bgcolor=

While循环仅显示最后一个条目


现在,只需打印一次表行,并使用该行的最后一个值。您的循环所做的只是将值分配给$ID、$User和$Password,每个循环传递只会覆盖旧值。要解决这个问题,需要将echo语句移动到循环体中

这将允许您在每次迭代中打印当前值,而不是仅打印最后一次。这是你想要的代码

<table border="5" bgcolor="white" width="300" align="center">
  <tr>
    <th bgcolor="grey">User ID</th>
    <th bgcolor="">User Name</th>
    <th bgcolor="grey">User Password</th>
  </tr>

  <?php

     $Load = "select * from sudents";
     $fetch = mysql_query($Load);

     while ($rows = mysql_fetch_array($fetch))
     {
        $ID=$rows['id'];
        $User=$rows['user'];
        $Password=$rows['password'];

        echo "<tr> 
        <td>$ID</td>
        <td>$User</td>
        <td>$Password</td>
        </tr>";
     }

  ?>

</table>

欢迎来到Stack Overflow@Cat,我看到两个问题

第一:未找到回音、变量转储或打印

第二:while循环只要迭代就会覆盖任何内容,因此在您的情况下,我会将找到的每个结果推送到一个数组,如下所示:

<?php
$q = "SELECT id, user, password FROM sudents";
$fetch = mysql_query($q);

$final = [];
while ($row = mysql_fetch_array($fetch))  {
    final[] = $row;
}
?>
<table>
    <tr>
        <th>User ID</th>
        <th>User Name</th>
        <th>User Password</th>
    </tr>
    <?php foreach($final as $r) {?>
        <tr>
            <td><?= $r['id'] ?></td>
            <td><?= $r['user'] ?></td>
            <td><?= $r['password'] ?></td>
        </tr>
    <?php } ?>
</table>

您的循环没有向页面打印任何内容。它是为变量设置值。每次都是过度地写这些变量。因此,当循环完成时,只会设置最后的值

然后,您只需回显最后一个值。一次

相反,在循环内回显输出,以便每个循环迭代都有一个输出元素:

while ($rows = mysql_fetch_array($fetch))
{
    $ID=$rows['id'];
    $User=$rows['user'];
    $Password=$rows['password'];

    echo "<tr> 
    <td>$ID</td>
    <td>$User</td>
    <td>$Password</td>
    </tr>";
}
但是,请注意,这里还有一些其他错误:

您的代码易受XSS攻击。 您正在显示用户密码。永远不要那样做。您的系统甚至不应该具有可读格式的用户密码。用户密码应该使用单向散列隐藏,任何人都不应该检索。
你的循环根本没有显示任何内容。这段代码中没有任何地方可以在页面上打印任何内容。。那么有什么不对呢?很抱歉,我只是在学习PHP。@Cat:这个问题中的代码有一个问题,那就是它根本不会在页面上打印任何内容。我不知道您链接的屏幕截图中生成结果的代码是什么,但不是这段代码。如果其中有来自您的查询的数据,它应该会显示一些内容。@Cat:将代码放在问题中,而不是放在注释中。这完全不可读。@Cat不客气:。当你的问题解决后,请标记一个答案,表示问题已经解决,这样将来有类似问题的程序员可以找到帮助。先生,我实际上是在训练自己。这不是一个实际的密码,只是一些随机数据插入表中进行测试,虽然我承认最好的命名方法不是密码。我正在练习/学习PHP。虽然我会记住你的观点,当我真的要开发任何东西的时候。非常感谢您的支持。我刚刚注册到该网站:对不起,但是我如何才能将问题标记为已回答。我找不到选项/按钮。哦,顺便说一句,我建议您使用mysqli,而不是普通的mysql,因为它已被弃用。祝你好运。这是我有史以来第一次编写PHP和SQL代码,很明显,一旦我了解了MySQLi的基本知识,我会选择MySQLi。我很乐意帮你做任何你想做的事。实际上,我喜欢与我遇到的人进行Teamviewer会话,并帮助解释PHP问题。你还有其他问题吗?太好了。但现在就这样了。你想把我加入skype吗?很酷。我加上了你。谢谢
while ($rows = mysql_fetch_array($fetch))
{
    $ID=$rows['id'];
    $User=$rows['user'];
    $Password=$rows['password'];

    echo "<tr> 
    <td>$ID</td>
    <td>$User</td>
    <td>$Password</td>
    </tr>";
}