我有一个MySQL和PHP脚本,当它不存在时输入一行。
INSERT INTO `tblPlayerAchievements` (HS_ID, AchievementID, AchievementProgress)
SELECT * FROM (SELECT ".$userData['HS_ID'].", ".$achievementID.", 0) AS tmp
WHERE NOT EXISTS (SELECT * FROM `tblPlayerAchievements`
WHERE HS_ID=".$userData['HS_ID']." AND AchievementID=".$achievementID.")
LIMIT 1
这完全有效,直到$ userData ['HS_ID']和$ achievementID都是相同的值然后它跳过那一个。我该如何解决这个问题?
答案 0 :(得分:1)
由于您还没有回答有关行存在时会发生什么的问题,我将假设您希望INSERT
失败。在这种情况下,您需要做的就是在UNIQUE
上创建(HS_ID, AchievementID)
索引。我还建议您在0
上设置默认值AchievementProgress
,以便您的查询只需指定用于创建行的ID。