- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要有关正确查询方式的帮助,以显示数据库表中的信息。
我的数据库表包含 id | 的列源地址 |目的地地址 |字节
信息存储在我的 MikroTik 路由器(IP 会计)中,但我的脚本将 IP 地址存储为整数,因此我可以选择范围。
我需要运行正确的查询来显示如下数据:
(源地址 -> 目标地址 = 上传)
(dst_address -> src_address = 下载)
我需要脚本输出以下内容:IP 地址 |上传字节 |下载字节 |总字节数
我当前的脚本只输出上传字节,我不确定如何再次颠倒顺序以显示下载字节,然后将两者相加以显示总字节。
这是我的代码:
<?php
//Include needed files
require ("config.php");
include ("includes/formatbytes.php");
//Connect to database
$conn = mysqli_connect($SQLserver, $SQLusername, $SQLpassword,
$SQLdatabase);
if (!$conn) {
die("Could not connect: " . mysqli_connect_error());
}
//Query database
$query = "SELECT * , SUM(bytes) AS upload_bytes FROM ipaccounting WHERE
src_address BETWEEN 3232235520 AND 3232301055 AND dst_address NOT BETWEEN
3232235520 AND 3232301055 GROUP BY src_address";
//Execute query
$result = mysqli_query($conn,$query);
//Display IP information
echo "<table>";
echo "<tr><th>IP Address</th><th>Upload</th></tr>";
while($row = mysqli_fetch_array($result)) {
if (isset($row['src_address'])) {
$src_address = $row['src_address'];
$src_address = long2ip($src_address);
}
/*if (isset($row['dst_address'])) {
$dst_address = $row['dst_address'];
} */
if (isset($row['upload_bytes'])) {
$uploadbytes = $row['upload_bytes'];
$uploadbytes = formatBytes($uploadbytes);
}
echo "<tr><td>".$src_address."</td><td>".$uploadbytes."</td></tr>";
}
echo "</table>";
mysqli_close($conn);
?>
请注意,整数 3232235520 是 192.168.0.1,3232301055 是 192.168.255.254
最佳答案
您需要聚合两次,一次用于上传,一次用于下载:
SELECT address, SUM(upload_bytes) as upload_bytes,
SUM(download_bytes) as download_bytes
FROM ((SELECT src_address as address, SUM(bytes) AS upload_bytes, 0 as download_bytes
FROM ipaccounting
WHERE src_address BETWEEN 3232235520 AND 3232301055 AND
dst_address NOT BETWEEN 3232235520 AND 3232301055
GROUP BY src_address
) UNION ALL
(SELECT dst_address, 0 AS upload_bytes, SUM(bytes) as download_bytes
FROM ipaccounting
WHERE dst_address BETWEEN 3232235520 AND 3232301055 AND
src_address NOT BETWEEN 3232235520 AND 3232301055
GROUP BY dst_address
)
) a
GROUP BY address;
您还可以以更合理的格式显示 ip 地址。 MySQL 具有 IP 地址函数(参见 here):
select . . . , inet_ntoa(src_address) as src_ip
您也可以在应用层执行此操作。
关于php - 来自 SQL 正确 sql 查询的 IP 会计显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141917/
我正在制作一份会计报告,其中一份报告需要列出给定日期后过去四个星期内的所有发布日期。 发布日期是一周的最后一天,在我们的例子中是周日或者该月的最后一天。 例如。如果我输入 12/1/2019 那么我将
如果苹果用户收到来自 firebase 应用程序分发的邀请,他需要一个谷歌帐户才能加入测试组,这是否正确? 在没有谷歌帐户的情况下使用它有什么建议吗? 最佳答案 当您创建 Google 帐户时,您会自
背景:我们构建了一个产品,通过注释和自定义类加载器向 Java 添加各种功能(事务、基于共享内存的对象持久性、索引和查询、基于集群的高可用性和复制)。这些功能的大部分实现都在 C++ 库中,这些库可通
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我有一个 Go/AppEngine 应用程序,我正在尝试对其进行微调以优化当前受 cpu 限制的并发请求。在这样做的过程中,我看到日志中的 cpu_ms 和仪表板中的 average runtime
我是一名优秀的程序员,十分优秀!