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

Php 如果MYSQL中存在,则更新用户分数,php,mysql,Php,Mysql,我正在使用PHP和MYSQL为排行榜制作一个用户评分系统,现在我被卡住了。我知道这和插入…有关。。。。关于重复密钥更新 这是一个IPN,基本上它应该做的是获取地址和金额,然后将其添加到排行榜的新行(如果地址不存在)。如果该地址确实存在,则应将其提取并将新金额添加到行中现有金额的顶部 提前感谢。您可以使用以下查询: UPDATE sometable SET somerow = somerow + increment WHERE otherrow = someid 请注意,您不推荐使用mysql,

我正在使用PHP和MYSQL为排行榜制作一个用户评分系统,现在我被卡住了。我知道这和插入…有关。。。。关于重复密钥更新

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


提前感谢。

您可以使用以下查询:

UPDATE sometable
SET somerow = somerow + increment
WHERE otherrow = someid
请注意,您不推荐使用mysql,您应该改用mysqli

另外,$amount的第二次使用容易受到SQL注入的影响。也可以使用单引号对其进行转义(最好使用
mysql\u real\u Escape\u string
然后使用单引号或只使用准备好的语句)

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

  • 使用PK而不是地址
  • 查找其他内容以唯一标识用户
  • 忽略所有这些直接回答您的问题:

    "INSERT INTO leaderboard (address, amount) VALUES ('$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+'$amount'"
    
    如果地址要求是唯一的,则可以正常工作。见:


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

    您可以发布卡住的代码吗?我们可以从那里开始工作。我有这个,但它不起作用。mysql_查询(“在重复键上插入排行榜(id、地址、金额)值(“”,$sender’,$amount'),更新金额=金额+$amount”)或死亡(mysql_错误());如果ID是自动钥匙,请不要在itOk中插入任何内容,谢谢。如果该地址在表中还不存在,这还会添加一行吗?我也需要它。现在我有了
    mysql_查询(“插入排行榜(id、地址、金额)值('''$sender','$amount'),重复键更新金额=amount+$amount”)或死亡(mysql_error())这不起作用。你能告诉我哪里出错了吗?你不应该至少插入一个id吗?因为这可能是主键,所以不能为空。我应该首先使用一些SQL IDE尝试查询。ID是自动递增的。在这种情况下,一开始就没有必要这样做。我只是想要一种方法,IPN可以将新的金额添加到现有地址的金额中,如果地址不存在,它将创建一个包含地址和金额的新行。但是如果id自动递增,则id是唯一的,因此任何给定id都不会与现有id冲突…谢谢。是的,我大约30分钟前就知道了。我所做的是删除id列,并将address作为主键,以便查询能够工作。再次感谢!
    
    "INSERT INTO leaderboard (address, amount) VALUES ('$sender', '$amount') ON DUPLICATE KEY UPDATE amount=amount+'$amount'"