【发布时间】:2012-10-13 13:39:50
【问题描述】:
我正在使用 PHP,我需要在 MySQL 数据库中插入一条新记录,或者如果它存在,只需更新它。我读了几个答案,他们建议使用REPLACE 或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”),则会将新记录添加到表中。
提前感谢您的帮助
【问题讨论】: