2012-12-13 50 views
-3

可能重复:
mysql kill process is user dont got enought points PHP在现场PHP的MySQL替换文本

我有一个点系统,用户系统,人们可以升级到[专业]用户与50分。当他们注册时,自动将[用户]写入我的权限字段。但是现在我想要这样做后,它检查他们是否得到50分,然后用[专业]替换[用户],然后减去50分。

<?php 
session_start(); 
//=============Configuring Server and Database======= 
$host  = 'localhost'; 
$user  = 'root'; 
$password = ''; 
//=============Data Base Information================= 
$database = 'login'; 

$conn  = mysql_connect($host,$user,$password) or die('Server Information is not Correct'); //Establish Connection with Server 
mysql_select_db($database,$conn) or die('Database Information is not correct'); 

//===============End Server Configuration============ 

//=============Starting Registration Script========== 


$username = mysql_real_escape_string($_POST['txtusername']); 

//=============To Encrypt Password=================== 

//============New Variable of Password is Now with an Encrypted Value======== 


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

    $insert = "UPDATE `users` SET `rights` = (`rights` [PRO]) WHERE `username` = '".$username."'"; 
    mysql_query($insert); 
header('location: succesupgrade.php'); 
}else{ 
    echo "You don't have enough points to buy [PRO]"; 
} 


?> 

再次说明:我希望在用户购买[PRO]后,[用户]将被替换为[PRO]。然后他们输了50分。如果他们没有得到50分。回声说了些什么。

+0

@MarcB - 相同的程序,不同的问题。 –

回答

1

做在一个:

UPDATE `users` 
SET `rights` = '[PRO]', points = points - 50 
WHERE 
    `username` = 'somename' 
    AND points >= 50 
    AND rights != '[PRO]' 

而只是检查是否有一个影响的行或不行。如果他们没有足够的积分,则不会更新,而且当他们已经拥有了权利时也不会更新。这可以避免竞争条件。