我正在尝试创建一个PHP代码,该代码将获取同一IP在页面中的IP,时间和时间。现在我已经这样做了:
require "connect.php" ;
$user_ip = $_SERVER['REMOTE_ADDR'];
function ip_add($ip){
$query = "INSERT INTO hits_ip VALUES ('' ,'', '$ip' , now()) ";
@$query_run = mysql_query($query);
}
ip_add($user_ip);
但是数不行。我已经尝试了很多选项,但是没有找到一个选项来检查$user_ip
例如行是否存在,如果是,则每次刷新时都有机会计数。
答案 0 :(得分:1)
请发布您的CREATE TABLE
声明以确保正确无误。
也就是说,一般来说,您应该可以执行INSERT
... ON DUPLICATE KEY UPDATE
statement,例如:
INSERT INTO hits_ip VALUES ('' ,'', '$ip' , now()) ON DUPLICATE KEY UPDATE hitcount=hitcount+1;
如果行已存在,这将在表中插入一行或增加hitcount
列。为此,您必须拥有该表的唯一索引(例如,已将ip
定义为主键)。
您的第二个选择是保留当前查询,并为每次点击插入一行。然后,您可以根据需要将所有这些行组合起来用于统计目的,例如:
SELECT ip, count(*)
FROM hits_ip
WHERE hitdate between '2015-01-01' AND '2015-01-31'
GROUP BY ip;
再往下走兔洞,会出现更多奇怪的选项,例如hits_ip
表上的creating a trigger来更新第二个统计表。问题是你一个人知道什么适合你的用例。