不显示需要显示的内容

时间:2018-11-01 23:03:20

标签: php html mysql

我正在尝试使用此代码计算当日创建的末尾ID和当月创建的末尾ID

$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs`
    WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-1' DAY) AND
          UNIX_TIMESTAMP()")->fetchColumn(0);
$MonthAttack = $odb->query("SELECT COUNT(id) FROM `logs`
    WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-30' DAY) AND
          UNIX_TIMESTAMP()")->fetchColumn(0);

我像往常一样将其放在html上,但后来foto

它显示0,那就不对。起作用的是显示总ID和运行ID。

    $RunningAttacks = $odb->query("SELECT COUNT(*) FROM `logs` WHERE `time` + `date` > UNIX_TIMESTAMP() AND `stopped` = 0")->fetchColumn(0);

    $TotalAttacks = $odb->query("SELECT COUNT(*) FROM `logs`")->fetchColumn(0);

这两种方法都可以,但是其他要在一天和一个月内计算的方法都不能使用,只是显示0。 这是MySQL上ID的工作方式 foto 我需要帮助修复$ TodayAttacks和$ MonthAttack来计算它们需要的内容。

如果有人知道如何解决此问题,请告诉我:)

1 个答案:

答案 0 :(得分:0)

由于使用的是DATE_SUB函数,因此间隔值不需要负数。要获取从昨天到现在的运行计数:

$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs`
    WHERE `date` > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))")->fetchColumn(0);

要获取最近30天的计数,请尝试:

$MonthAttack = $odb->query("SELECT COUNT(id) FROM `logs`
    WHERE `date` > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 30 DAY))")->fetchColumn(0);

有关其工作原理的示例在此处发布:

https://www.db-fiddle.com/f/itLtCzJbPbWuCWcx3jLiMk/1