Php mysql更新mysql信息

Php mysql更新mysql信息,php,database,insert,sql-update,Php,Database,Insert,Sql Update,我有一个积分系统,人们可以用积分购买不同的东西。现在我要做的是让人们可以升级到[专业]用户。当他们注册时,他们会以[user]的身份登录mysql。我正在编写一个代码,这样在行动后他们会损失50分,而他们的[用户]会被[专业]取代。但现在我是,用[pro]替换。这是我的代码: $insert = "UPDATE `users` SET `points` = (`points`-50) WHERE `username` = '".$username."' and points > 50";

我有一个积分系统,人们可以用积分购买不同的东西。现在我要做的是让人们可以升级到[专业]用户。当他们注册时,他们会以[user]的身份登录mysql。我正在编写一个代码,这样在行动后他们会损失50分,而他们的[用户]会被[专业]取代。但现在我是,用[pro]替换。这是我的代码:

$insert = "UPDATE `users` SET `points` = (`points`-50) WHERE `username` = '".$username."' and points > 50";
mysql_query($insert);
if (mysql_affected_rows() > 0)
{

    // other codes

  $insert =  "UPDATE users SET rights=' [user]'  WHERE rights=' [pro]' WHERE `username` = '".$username."'";
    mysql_query($insert); 
header('location: succes.php');
}else{
    echo "You don't have enough points to upgrade to [PRO]";
}
而不是:

$insert =  "UPDATE users SET rights=' [user]'  WHERE rights=' [pro]' WHERE `username` = '".$username."'";
尝试:

你有两个WHERE子句,那是行不通的。一旦你拿走50分,只需将他们的权利更新到专业版即可

您还可以将第一次和第二次查询与以下内容结合使用:

$insert = "UPDATE `users` SET `points` = (`points`-50), rights = ' [pro]' WHERE `username` = '".$username."' and points > 50";

您可以在一个查询中实现这一切

UPDATE users SET rights=' [pro]', points = points - 50 WHERE username = '$username' AND points >= 50

你也可以考虑在Wrime= '[Up]中添加一个条件,除非你在你的应用程序中有其他的方法来强制这个升级选项只适用于目前没有PRO.< /P> < P>的人,只需编译肖恩SQL和你的代码

在第一个查询中替换此项

    and points >= 50

因为如果用户有50,他也可以升级到[pro]。

您看到的结果是什么?旁注:在代码的第一行中使用$username之前是否安全转义?@nappingrabbi:我没有得到结果。。。也许这就是原因吧?——第二条注意:如果用户得分=50分,他能得到专业分数吗?可能你的第一行代码条件应该是username`='.$username.'和points>=50`可能重复的谢谢,效果很好!要接受,但需要等待4分钟:这最好是作为评论,而不是回答
    and points >= 50