我正在使用 PHP,我需要在 MySQL 数据库中插入一条新记录,或者如果它存在,只需更新它。我阅读了他们建议使用REPLACE
or的几个答案INSERT...ON DUPLICATE KEY UPDATE
,但是如果我很好理解,这两个选项意味着使用唯一字段或主键(唯一的)。在我的例子中,MySQL 表的值类似于:
Timestamp | Query1 | Query2 | Result
--------------------------------------------------------
2012-10-13 08:15:27 | American | Men | here result
2012-10-13 08:15:23 | American | Men | result2
2012-10-13 08:15:27 | American | Women | other result
2012-10-13 08:15:27 | German | Men | here result
因此我不能有主键或唯一字段,因为“query1”、“query2”和“Result”可以有相同的值(例如,我可以有多个包含“American”(query1)和“Men”(query2)字段的记录和不同的结果。
目前在 PHP 中我正在使用:
INSERT INTO results (Timestamp, Query1, Query2, Result) VALUES ('$current_timestamp', '$nationality', '$gender', '')
它只是附加所有记录并创建一个巨大的数据库。但是我想要实现的是在整个组合 query1&query2&result 不存在的情况下添加一条新记录。否则我只想更新“时间戳”字段。
例如,如果我的 PHP 脚本产生以下数据:
Timestamp | Query1 | Query2 | Result
2012-10-13 08:15:23 | American | Men | result2
并且数据库已经包含“American”&“Men”&“result2”的精确组合,那么只更新字段“timestamp”。否则,如果组合不同(例如“American”“Men”“result3),则将新记录添加到表中。
预先感谢您的帮助