我正在使用PHP和MYSQL为排行榜制作用户评分系统,现在我被困住了。我知道它与INSERT INTO有关......在重复主题更新
它是一个IPN,基本上它应该做的是获取地址和数量,然后如果地址不存在则将其添加到排行榜中的新行。如果该地址确实存在,那么它应该选择该地址并在该行中的现有金额之上添加新的金额。
提前致谢。
答案 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地址,不同用户可以拥有相同的地址,一个用户可以拥有多个地址。您可能需要考虑:
忽略所有这些以直接回答您的问题:
"INSERT INTO leaderboard (address, amount) VALUES ('$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+'$amount'"
如果要求地址是唯一的,应该可以正常工作。请参阅:http://sqlfiddle.com/#!2/cf7b1/1
(如果你没有添加它赢得的唯一索引,你可以随时识别PK并使用它)