php mysql如果存在则更新else插入

时间:2015-09-12 18:42:15

标签: php mysql phpmyadmin

我正在尝试创建一个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例如行是否存在,如果是,则每次刷新时都有机会计数。

1 个答案:

答案 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来更新第二个统计表。问题是你一个人知道什么适合你的用例。