使用mysql更新玩家的分数

时间:2012-02-23 18:56:14

标签: php iphone mysql

我的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程序员,所以如果你愿意,请提供一个简单的例子,提前谢谢!

5 个答案:

答案 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