gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:38:25 24 4
gpt4 key购买 nike

我正在使用 PHP 和 MYSQL 为排行榜制作用户评分系统,但我现在卡住了。我知道这与 INSERT INTO .... ON DUPLICATE KEY UPDATE 有关

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

提前致谢。

最佳答案

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 注入(inject)攻击。也使用单引号对其进行转义(最好使用 mysql_real_escape_string 然后使用单引号或只使用准备好的语句)。

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

  1. 使用 PK 而不是地址
  2. 找到其他东西来唯一标识用户

忽略所有这些直接回答您的问题:

"INSERT INTO leaderboard (address, amount) VALUES ('$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+'$amount'"

如果要求地址是唯一的,应该可以正常工作。请参阅:http://sqlfiddle.com/#!2/cf7b1/1

(如果您不添加唯一索引,它将无法正常工作,您始终可以只识别 PK 并改用它)

关于php - 如果 MYSQL 中存在则更新用户分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com