2012-12-13 51 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]' 

而只是檢查是否有一個影響的行或不行。如果他們沒有足夠的積分,則不會更新,而且當他們已經擁有了權利時也不會更新。這可以避免競爭條件。