我正在尝试创建一个 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
行是否存在,如果存在则在每次刷新时进行计数。
最佳答案
请发布您的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;
继续深入兔子洞,会出现更多奇怪的选项,例如 creating a trigger hits_ip
表上更新第二个统计表。问题是,只有您知道什么适合您的用例。
关于php mysql 如果存在更新否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32542416/