【问题标题】:Create a new row every day for counting page views每天创建一个新行来计算页面浏览量
【发布时间】:2020-12-27 22:51:01
【问题描述】:

基本想法是,我每天都在尝试为我的页面浏览量创建一个新行,以便我可以呼应我的日常浏览量。

在我的数据库中,我有三列:pageid、pagehits 和 pagedate(pagedate 表会自动添加日期)

我的 PHP 代码如下所示:

<?php
require 'config/db.php';
$today = date("d-m-Y");
$query = "SELECT * FROM pagehits";
$result = mysqli_query($conn, $query);
if ($result->num_rows==0) {
    $insertquery = "INSERT INTO pagehits (pagehits) VALUE (0)";
    mysqli_query($conn,$insertquery);
} else {
    $updateQuery = "UPDATE pagehits SET pagehits = `pagehits` + 1 ORDER BY pageid DESC LIMIT 1";
    mysqli_query($conn,$updateQuery);
}

现在的问题是我想知道如何每天插入一个新行。我还发现PHP Count site view creating a row every day 有一个代码,其中该人有一个系统可以每天创建一行专门用于计算视图,但是无论我尝试修改我的代码以使其工作,它都不起作用。

这里是源代码:

$today = date("d-m-Y");
$siteViewsPrintSQL = $DB_CON -> query("SELECT * FROM statistics");
$siteViewsPrint = $siteViewsPrintSQL -> fetch(); 

if ($siteViewsPrint['date'] == $today) {
    $updateSiteViewsCount = "UPDATE andreaem.statistics SET site_views = site_views+1 WHERE date = $today";
    $DB_CON ->query($updateSiteViewsCount);
} elseif ($siteViewsPrint['date'] != $today) {
    $createSiteViewsCount = "INSERT INTO `andreaem`.`statistics` (`ID`, `date`, `site_views`, `new_users`) VALUES (NULL, '$today', '0', '0');";
    $DB_CON -> query($createSiteViewsCount);
    $updateSiteViewsCount = "UPDATE andreaem.statistics SET site_views = site_views+1 WHERE date = $today";
    $DB_CON -> query($updateSiteViewsCount);
} else {
    print 'Error while updating siteviews.';
}

【问题讨论】:

  • 你在基本概念上迷失了我
  • 你得到什么错误?
  • 只要在请求带有时间戳的页面时添加一行。然后,您可以查询任何时间段的请求总和。
  • 预定INSERT?创建TRIGGER?

标签: php mysql sql count sql-update


【解决方案1】:

作为初学者:许多应用程序所做的是为每次点击记录一行,而不是增加每日计数器。您通常会记录页面名称、点击的时间戳等。

使用此配置,计算今天的点击量只是一个 count(*) 查询,类似于:

select count(*) as cnt_hits
from page_hits
where hit_timestamp >= current_date

现在关于您最初的问题,如果您想维护每日计数器。你可以使用这样的表格:

create table daily_hits (
    hit_date date primary key,
    cnt int
);

日期是表的主键。然后我们可以使用on duplicate key:

insert into daily_hits (hit_date, cnt)
values (current_date, 1)
on duplicate key update cnt = cnt + 1;

这会为今天的日期创建一行,初始计数器为1;如果该行已经存在,那么计数器会增加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2020-10-24
    • 2015-03-24
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多