Php 使用mysql更新玩家的分数

Php 使用mysql更新玩家的分数,php,iphone,mysql,Php,Iphone,Mysql,我有一个简单的iphone游戏在线高分系统,有一个mysql数据库,它有一个字段rank、name、score和udid(唯一设备标识符)。我不希望udid中有多个分数,我的问题是:如何确保删除旧分数并插入新分数,以及新的高分 我插入分数的代码是: // Insert the score $retval = mysql_query("INSERT INTO $table( udid, name, score ) VALUES (

我有一个简单的iphone游戏在线高分系统,有一个mysql数据库,它有一个字段rank、name、score和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程序员,所以如果你想,请提供一个简单的例子,提前感谢

看看mysql中的
REPLACE
关键字:

“替换”的工作方式与“插入”完全相同,只是 表与主键或唯一键的新行具有相同的值 索引时,在插入新行之前删除旧行


您需要的是将
替换为


阅读更多信息。

您需要使用update语句覆盖数据库中的值

update table set field=value where id=$theudid

我认为您想要的是在它存在时进行更新或以其他方式插入。有一种方法可以实现内置调用,这种方法在过去的相同情况下也适用于我。

可以很好地工作,正如其他人所建议的,但是,REPLACE会实际删除行,然后插入新行,这在性能上是昂贵的

我建议您改用:


请确保在
udid
上有一个主键或唯一键,以使其正常工作。

我是一名iphone程序员,不知道如何实现此功能,能否提供一个示例?提前感谢。语法在我链接的页面上,但本质上它允许您输入新记录或基于唯一字段更新现有记录(在您的示例中,
udid
)。示例:
REPLACE-INTO_-table(udid,name,score)值(“$udid”,“$name”,“$score”)
(假设已正确转义变量)$retval=mysql_查询(“插入到$table(udid,name,score)值(“$udid”,“$name”,“$score”)在重复的键更新分数上,其中udid=$udid“,$conn)
但如果SQL语法有错误,则无法插入分数;请查看与MySQL服务器版本对应的手册,以了解第11行“WHERE udid=1111”附近要使用的正确语法。您必须有这样一个赋值
updatescore='$score',其中
$retval=mysql\u查询(“插入到$table(udid,name,score)值('$udid','$name','$score'),其中udid='$udid',$conn');给出:在第11行使用near'WHERE'1111'的正确语法这可能是最好的方法-但请确保在MySQL表中将“udid”标记为主键或唯一键,否则这将不起作用
INSERT INTO tablename (udid, name, score)
  VALUES (12, 'Marcus', 100)
  ON DUPLICATE KEY UPDATE score = 100 WHERE udid = 12