我的iphone游戏有一个简单的在线高分系统,带有一个mysql数据库,它有一个字段排名,名称,分数和udid(唯一设备标识符)。我不想从udid获得多个分数,我的问题是:我如何确保删除旧分数并插入新分数,并使用新的高分。
我插入分数的代码是:
// Insert the score
$retval = mysql_query("INSERT INTO $table(
udid,
name,
score
) VALUES (
'$udid',
'$name',
'$score'
)",$conn);
if($retval) {
echo "Inserted score $score for $name";
}
所以我想覆盖旧分数并插入新分数。
感谢您的帮助,
干杯,乔
编辑:
我不是php程序员,所以如果你愿意,请提供一个简单的例子,提前谢谢!
答案 0 :(得分:4)
REPLACE正常工作,正如其他人所建议的那样,但是,REPLACE会实际删除该行,然后插入新行,这在性能上是昂贵的。
我建议您改为使用INSERT ... ON DUPLICATE KEY:
INSERT INTO tablename (udid, name, score)
VALUES (12, 'Marcus', 100)
ON DUPLICATE KEY UPDATE score = 100 WHERE udid = 12
确保udid
上有主要密钥或唯一密钥才能生效。
答案 1 :(得分:1)
查看mysql中的REPLACE
关键字:documentation。
REPLACE的工作原理与INSERT完全相同,只是如果在一个旧行中 table与PRIMARY KEY或UNIQUE的新行具有相同的值 index,在插入新行之前删除旧行。
答案 2 :(得分:1)
我认为您想要的是在存在或以其他方式插入时进行更新。有一种方法可以做到内置的名为INSERT ... ON DUPLICATE KEY UPDATE的方法,在过去的同样情况下对我有用。
答案 3 :(得分:0)
你想要的是REPLACE INTO
。
了解更多here。
答案 4 :(得分:0)
您需要使用update-statement来覆盖数据库中的值。
update table set field=value where id=$theudid