虽然在PHP中循环不能正常工作

时间:2015-08-17 19:51:59

标签: php while-loop

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

  

enter image description here

<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>

3 个答案:

答案 0 :(得分:1)

如您所知,您只打印一次表格行,并使用该行的最后一个值。您的所有循环都会将值分配给$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>

答案 1 :(得分:1)

您的循环未向页面打印任何内容。它是为变量设置值。而且它每次都会覆盖这些变量。因此,当循环完成时,仍然只设置 last 值。

然后你只是回显最后一个值。一次。

相反,回显循环中的输出,这样每个循环迭代就可以有一个输出元素

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>";
}

但请注意,这里还有其他一些问题:

  1. 您的代码容易受到XSS攻击。
  2. 显示用户密码 。从不,永远这样做。您的系统甚至不应该以可读格式拥有用户密码。用户密码应使用单向哈希模糊,任何人
  3. 永远不可检索

答案 2 :(得分:0)

欢迎使用Stack Overflow @Cat我看到两个问题。

首先:找不到echovar_dump()print

第二: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>