我正在制作一个网站面板,列出管理面板的入侵尝试。当我尝试将它们全部列出时,它只显示10个中的第一个。
这是我的代码:
<?php
include("xxxxxxxxx.php");
$query = "SELECT * FROM xxxxx";
$result = mysqli_query($link, $query) or die('[MYSQLI ERROR] '.mysqli_error($link));
echo mysqli_num_rows($result);
while($row=mysqli_fetch_assoc($result)) {
$ip = $row['ip'];
$date = $row['date'];
$query2 = "SELECT * FROM xxxxxx WHERE ip='".$ip."'";
$result2 = mysqli_query($link, $query2) or die('[MYSQLI ERROR] '.mysqli_error($link));
while($row=mysqli_fetch_assoc($result)) {
$userid .= ";".$row['id'];
$user .= ";".$row['name'];
}
$userids = explode($userid, ";");
$users = explode($user, ";");
for($i=1;$i<=count($users);$i++) {
$userinfo .= "<a href=\"xxx.php?id=".$userids[$i]."\">".$users[$i]."</a><br/>";
}
echo "
<tr>
<td>".$date."</td>
<td>".$ip."</td>
<td>".$userinfo."</td>
</tr>
";
}
?>
为什么它不起作用?
在你问为什么我在for()循环中从1开始之前,这是因为第一个将是&#34;&#34;而且我不需要显示结果。
答案 0 :(得分:1)
你有2个while循环,它使用$ row作为变量。
更改第二个循环以使用不同的变量名称来修复它
答案 1 :(得分:0)
内部while
循环耗尽第一个查询($result
)的结果,而不是像第二个查询那样迭代第二个查询($result2
)的结果。
简而言之,请替换此块:
while($row=mysqli_fetch_assoc($result)) {
$userid .= ";".$row['id'];
$user .= ";".$row['name'];
}
使用:
while($row2=mysqli_fetch_assoc($result2)) { // Note the usage of $result2.
$userid .= ";".$row2['id'];
$user .= ";".$row2['name'];
}