如果MYSQL中存在更新用户分数

时间:2014-04-13 03:19:11

标签: php mysql

我正在使用PHP和MYSQL为排行榜制作用户评分系统,现在我被困住了。我知道它与INSERT INTO有关......在重复主题更新

它是一个IPN,基本上它应该做的是获取地址和数量,然后如果地址不存在则将其添加到排行榜中的新行。如果该地址确实存在,那么它应该选择该地址并在该行中的现有金额之上添加新的金额。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

UPDATE sometable
SET somerow = somerow + increment
WHERE otherrow = someid

答案 1 :(得分:1)

mysql_query("INSERT INTO leaderboard (id, address, amount) VALUES ('', '$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+$amount") or die(mysql_error())

一些注意事项,你不推荐使用mysql,你应该使用mysqli代替。

此外,第二次使用$ amount易受SQL注入攻击。也可以使用单引号将其转义(使用mysql_real_escape_string然后使用单引号或仅使用预处理语句更好)。

如果您有自动增量的PK,请将其从插入查询中排除(您的代码会尝试将空字符串插入到INT列中,但不会起作用。)另请注意,如果通过地址是指IP地址,不同用户可以拥有相同的地址,一个用户可以拥有多个地址。您可能需要考虑:

  1. 使用PK代替地址
  2. 找到别的东西来唯一识别用户
  3. 忽略所有这些以直接回答您的问题:

    "INSERT INTO leaderboard (address, amount) VALUES ('$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+'$amount'"
    
    如果要求地址是唯一的,

    应该可以正常工作。请参阅:http://sqlfiddle.com/#!2/cf7b1/1

    (如果你没有添加它赢得的唯一索引,你可以随时识别PK并使用它)