有一个用户列表,对于每个用户,您需要显示与其对应的查询。问题是您只能显示每个用户的一个请求,即 我需要做一个 while 循环,但我不明白如何做。
SQL
//Таблица пользователей
1 id int(11)
2 user tinytext
3 ip text
4 user_agent varchar(255)
5 request int(11)
6 cnt int(11)
7 date timestamp
//Таблица запросов
1 id int(11)
2 ip text
3 request_url text
4 user_id int(11)
5 date timestamp
PHP代码
$sql = "SELECT * FROM `online_adm` WHERE $where ORDER BY `date` DESC";
$Result = mysqli_query($CONNECT, $sql);
while ($row = mysqli_fetch_assoc($Result)) {
$Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `online_ddos` WHERE `ip` = '$row[ip]' ORDER BY `date` DESC"));
$USERS.='
<div class="table_block">
<div class="inner_block">
<p>'.$row['user'].'</p>
</div>
<div class="inner_block">
<ul class="droplist_menu">
<li>
<a href="#">Запросы</a>
<ul>
<li>'.$Row['request_url'].'</li>
</ul>
</li>
</ul>
<div class="inner_block">
<p class="ip-hidden">'.$row['ip'].'</p>
</div>
<div class="inner_block" id="cnt_vw">
'.$cnt.'
</div>
<div class="inner_block">
<p>'.$row['data'].'</p>
</div>
</div>
';}
echo'
<h5>Пользователи</h5>
<div class="table inline">
<div class="table_block">
<div>Пользователь</div>
<div>Список запросов</div>
<div>IP</div>
<div id="cnt_vw"><i>(CNT)</i></div>
<div>Время</div>
</div>
'.$USERS.'
</div>';
根本没有必要对每条记录进行循环查询。为此,您可以使用 JOIN 运算符。例如:
然后使用接收到的数据生成表中的数据。