While循环仅显示最后一个条目
<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>
答案 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>";
}
但请注意,这里还有其他一些问题:
答案 2 :(得分:0)
欢迎使用Stack Overflow @Cat我看到两个问题。
首先:找不到echo
,var_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>