-1

我有一个积分系统,人们可以用积分购买不同的东西。现在我要让人们可以升级到 [PRO] 用户。当他们注册时,他们以 [user] 身份登录 mysql。我正在编写代码,以便在行动后他们失去 50 分,并且他们的 [user] 被 [PRO] 取代。但现在我用 [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]";
}
4

3 回答 3

2

代替:

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

尝试:

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

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

您还可以将您的第一个和第二个查询与以下内容结合起来:

$insert = "UPDATE `users` SET `points` = (`points`-50), rights = ' [pro]' WHERE `username` = '".$username."' and points > 50";
于 2012-12-13T19:35:33.997 回答
0

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

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

您也可以考虑添加一个条件,仅rights=' [user]'在您的应用程序中有其他方式强制此升级选项仅适用于当前不是“专业”的人时才执行此操作。

于 2012-12-13T19:40:01.417 回答
0

只是为了完成 Sean sql 和你的代码

在您的第一个查询中替换它

    and points >= 50

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

于 2012-12-13T19:40:24.030 回答