我正在使用PHP,我需要在MySQL数据库中插入新记录,或者如果它存在,只需更新它。我读了几个答案,他们建议使用REPLACE
或INSERT...ON DUPLICATE KEY UPDATE
,但是如果我很好理解,这两个选项意味着使用唯一字段或主键(这是唯一的)。在我的情况下,MySQL表有类似这样的价值观:替换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”和“结果” univoque字段可以有相同的值(例如,我可以有几条记录包含“美国”(QUERY1)和“男人”(QUERY2)和不同的结果更多的领域
在PHP中的那一刻我使用:
INSERT INTO results (Timestamp, Query1, Query2, Result) VALUES ('$current_timestamp', '$nationality', '$gender', '')
刚刚追加的所有记录并创建一个巨大的数据库,但我想要实现的是添加一个新的记录,只要是ent ire组合查询1 &查询2 &结果不存在。否则,我只想更新“时间戳”字段。
举例来说,如果我的PHP脚本生成以下数据:
Timestamp | Query1 | Query2 | Result
2012-10-13 08:15:23 | American | Men | result2
和数据库已经包含的“美国” &“男人” &“结果2”则只是场“时间戳”是这样的精确组合更新。否则,如果该组合是不同的(例如,“美国”,“男性”,“result3)一个新的记录添加到表中。
预先感谢您的帮助
没有意识到时间戳应该更新 – davidkonrad