php - 仅当另一列匹配时才更新记录?

标签 php mysql sql-update

我正在尝试开发一个简单的跟踪系统。我想做的是插入新记录或更新记录(如果它与同一事件匹配)。如果用户在新事件中被触发,我想插入一条新记录。这是我当前运行良好的查询。

INSERT INTO `tracking` (`email`,`ip`,`referrer`,`campaign`,`timestamp`) 
VALUES ('$campaign[0]','$ip','$referrer','$campaign[1]','$timestamp') 
ON DUPLICATE KEY UPDATE `last_timestamp` = '$timestamp'

我的目标是如果 joe@bob.net 触发 campaign1,那么它将插入记录。如果他再次尝试事件 1,它只会更新时间戳。现在,当 joe@bob.net 触发 campaign2 时,它会插入一条全新的记录。

所以基本上我试图让它仅在用户触发新事件时插入。否则,我希望它更新时间戳。

如果有任何想法或建议,我将不胜感激!

最佳答案

除非我遗漏了什么,否则您只需要在表格的“电子邮件”和“广告系列”列上放置一个唯一键即可:

ALTER TABLE tracking ADD UNIQUE KEY uk_email_campaign (email, campaign);

关于php - 仅当另一列匹配时才更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891318/

相关文章:

mysql - Mysql中如何通过比较两个表返回记录,即使其中一个表为空或为空值?

MySQL 加入 PHP

mysql - 从子查询/连接同一个表更新 MySQL 表

mysql - 更新选择查询返回的总行数的 25%

mysql - 如何 INSERT 或 UPDATE 大量行(关于表的 auto_increment 值)

php - 一个表格,一个按钮,一个mysql行

php - MySql 一般错误 : 2053

php - 分解 txt 文件 PHP

javascript - Controller 不向ajax返回数据

mysql - 我无法更改变量 "max_execution_time"