0

您好,感谢您查看我的代码!

好吧,当两个用户同时提交两个表单时,我遇到了问题。我将尝试详细说明。

我的表单必须更新三个用户值,

我的PHP:

<?php
set_time_limit(60);
if (isset($_POST['submit-buy'])) {
    $buy_id = $_POST['buy_id'];
    $buyer_id = $_POST['buyer_id']; 
    $buy_value = $_POST['buy_value'];
    $owner_id = $_POST['owner_id']; 

    // more function goes here and returns value below i am also using if else to check if any value change it gives error msg to slow down
    // $petvalue = 100000;
    // $pet_earn = 5500;
    // $check_petcash = 10000000;
    // $pet_newvalue = 110000;
    // $pet_updateoid = 1;
    // $pettobuy = 2;

    // first

    $check_petcash = $pet_user->cash;    //checking before updating
    $pet_newcash = round($check_petcash + $pet_earn);            // pet new cash        
    $upet_newvalue = mysql_query("UPDATE members SET value='$pet_newvalue', cash='$pet_newcash', ownerid='$pet_updateoid' WHERE id='$pettobuy'");       

    // second
    // $old_owner = 3;

    $ex_owner_cash = $oldowner->cash;    //checking before updating     
    $ex_owner_newcash = round($ex_owner_cash + $petvalue + $pet_earn);  // old owner cash               
    $update_newcash = mysql_query("UPDATE members SET cash='$ex_owner_newcash' WHERE id='$old_owner'"); 

    // and last
    // $pet_buyvalue = 120000;
    // $user_id = 1;

    $new_user_cash = $new_owner->cash;      //checking before updating 
    $new_ownercash = round($new_user_cash - ($pet_buyvalue - $pet_earn));  // user cash         
    $upadte_ownercash = mysql_query("UPDATE members SET cash='$new_ownercash' WHERE id='$user_id'");

    $msg = '<span id="other-info-font">You bought pet yay!</span><br/>';        
}
?>

主要问题发生在两个用户同时提交表单并且一个具有快速网络而另一个没有时。有时它会削减$new_ownercash。有时只有第一个和第二个查询得到更新,第三个没有任何更改或(我的意思是第二个和第三个查询中的所有计算都出错)作为其他用户提交表单。我有很多用户,它是一个游戏买卖,我们正在进行 beta 测试,所以还有时间修复它。

当所有用户同时玩游戏并且搞砸所有事情时,就会发生这种情况。我很聪明,因为我是新手。

谢谢

4

1 回答 1

0

你没有给变量$old_owner赋值!同上$user_id

BTW - 停止使用 mysql_ 库,因为它们已被弃用。还要研究 SQL 注入 - 这很危险,而且你的脚本充满了可能性。

编辑

WHERE在第二次和第三次更新中使用了相同的子句。因此,“同时”运行脚本将取决于如何首先更新表格。

当然$old_owner并且$user_id应该同时在脚本的两次执行中有所不同?

于 2013-03-13T05:39:13.263 回答