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

标签 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 行是否存在,如果存在则在每次刷新时进行计数。

最佳答案

请发布您的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/

相关文章:

php - 通过 PHP 解析嵌套循环的 json

php - 如何用<<<qq重写php echo

sql - 帮助 mysql 查询/过程

mysql - 无法在 Mysql/plesk 上重置管理员密码

phpmyadmin - 无法在xampp中启动mysql

database - 一次性导入所有mysql数据库

php - Mysql 连接查询,用于显示带有 viewstatus!=public 的 friend 帖子

php - 确认电子邮件未从 php 和 mysql 数据发送?

php - 一条mysql语句的两个结果

mysql - 如何在 MySQL 中获取多个最大记录