我在steamid
的数据库表中放了一个唯一索引。我不确定如何插入具有此键重复值的记录(删除旧记录)而不会出现错误。有人可以编辑我的代码以使其适合,谢谢。
$sql = "INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')";
错误是:
错误:INSERT INTO steam_data(reg_date,reg_year,steamname,steamid) 价值观('3月20日,07:09 pm','2017','Aweosmedude', '76561113498123831721')重复输入'76561113498123831721'为密钥 'steamid'
答案 0 :(得分:0)
$sql = "INSERT IGNORE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')";
答案 1 :(得分:0)
这意味着您的steam_data
表中已有streamid=76561113498123831721
的记录;并且您的架构中有一个约束,可以确保您不会有多个streamid
。因此,您可以执行INSERT IGNORE INTO stream_data...
或执行INSERT INTO stream_data...ON DUPLICATE KEY...
e.g。
INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid') ON DUPLICATE KEY UPDATE steamname=VALUES(steamname);
(@ ReneS答案有INSERT IGNORE INTO...
)的例子
答案 2 :(得分:0)
另一个选项是REPLACE
statement:
REPLACE
与INSERT
完全相同,只是如果表中的旧行与PRIMARY KEY
或UNIQUE
索引的新行具有相同的值,在插入新行之前删除旧行。
REPLACE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')
(我当然希望你实际上没有用这样的查询将数据插入数据库。使用准备好的语句!)