我想创建用户每个日期的所有访问次数的统计。目前,我正在努力寻找在哪里插入用于计算每个日期的计数的代码。以下是我当前的 php 代码:
$lastvis = '';
$lastui = '';
$count = array();
$i = 0;
$tvQuery = "SELECT * FROM visits ORDER BY lastvisit ASC";
$tvQ = $conn->prepare($tvQuery);
$tvQ->execute();
$tvQres = $tvQ->get_result();
while ($row = $tvQres->fetch_assoc()) {
if($row['lastvisit'] == $lastvis) {
$count[$i]=+1;
} else {
$lastvis = $row['lastvisit'];
echo $i.'<br>';
$count[$i]=+1;
echo $count[$i].'<br>';
$i++;
echo $lastvis.'<br>';
}
}
到目前为止,我可以使用上面的代码从表中分离出唯一的日期。我正在尝试在
count
数组中输入每个日期的唯一用户数。如果您问我为什么要编写这段代码,我正计划将这些数据传输到图表中。
我没有看到您在代码中的任何地方处理 UID。您只是计算唯一日期,而不是每个日期的唯一用户。无论如何,您应该让查询为您处理它,而不是浪费时间循环遍历值。
而不是查询:
$tvQuery = "SELECT * FROM visits ORDER BY lastvisit ASC";
尝试:
$tvQuery = "SELECT DISTINCT lastvisit, COUNT(lastvisit) AS numvisits FROM visits GROUP BY lastvisit ASC";
这将返回字段
lastvisit
中的唯一日期列表,其中第二个字段 numvisits
包含该日期在表中出现的次数。
但是,正如我怀疑的那样,如果您想要的是每个日期的唯一用户列表,并假设带有用户 ID 的字段是
uid
,那么查询应该如下所示:
$tvQuery = "SELECT DISTINCT lastvisit, uid, COUNT(lastvisit) AS numvisits FROM visits GROUP BY lastvisit, uid ASC";
您在这里告诉查询的是:
lastvisit
),然后按用户 (uid
)希望这有帮助。