每15分钟设置一个收入限制错误

时间:2013-05-18 16:47:37

标签: php mysql sql

好的,所以这个文件每隔15分钟运行一次,你会在那些阶段获得收入,农业和能量奖励,但我不希望他们超过$ storagecap,但他们不会停下来,他们不断添加越来越多的食物,黄金,能量到你的帐户,永不停止。

我想要做的是增加你的收入然后如果你的收入超过$ storagecap把你的黄金放到$ storagecap但它不起作用我的代码

<?php 
include("functions.php");
connect();
include("user_stats.php");
?>

 <?php
      if(isset($_SESSION['uid'])){
        include("safe.php");
        include("storagecap.php");?>

<?php
$get_users = mysql_query("SELECT * FROM `stats`") or die(mysql_error());

while($user = mysql_fetch_assoc($get_users)) {
  //Get
  $gold = $user["gold"];
  $food = $user["food"];
  $energy = $user["energy"];

  //Increment
  $gold += $user["income"];
  $food += $user["farming"];
  $energy += 5;

  //Verify and correct
  if($energy > 100)
     $energy = 100;

  if($gold > $storagecap)
     $gold = $storagecap;

  if($food > $storagecap)
     $food = $storagecap;

  //Submit
  $update = mysql_query("UPDATE `stats` SET
                    `gold`= '".$gold."',
                    `food`= '".$food."',
                    `energy`= '".$energy."' WHERE `id`='".$user['id']."'") or     die(mysql_error());
}
?>

1 个答案:

答案 0 :(得分:0)

在我的溢出检查中,您似乎遇到了一些语法问题。 对于一个人来说,即使这个有效,他们也会有超过上限的金额直到接下来的15分钟。 例如,假设您有99个能量,并且它增加了5个,您现在将拥有104个。但是,上限检查仍然具有旧值,即99,并且什么都不做。 还

`gold`=`gold` '$storagecap' 

不正确,您需要使用

`gold`= '".$storagecap."'

但要解决15分钟的延迟,最好的方法是:

<?php
include("functions.php");
include("storagecap.php");
connect();

$get_users = mysql_query("SELECT * FROM `stats`") or die(mysql_error());

while($user = mysql_fetch_assoc($get_users)) {
  //Get
  $gold = $user["gold"];
  $food = $user["food"];
  $energy = $user["energy"];

  //Increment
  $gold += $user["income"];
  $food += $user["farming"];
  $energy += 5;

  //Verify and correct
  if($energy > 100)
     $energy = 100;

  if($gold > $storagecap)
     $gold = $storagecap;

  if($food > $storagecap)
     $food = $storagecap;

  //Submit
  $update = mysql_query("UPDATE `stats` SET
                        `gold`= '".$gold."',
                        `food`= '".$food."',
                        `energy`= '".$energy."' WHERE `id`='".$user['id']."'") or     die(mysql_error());
}
?>

请注意我没有测试过此代码,将其视为一个粗略的例子

编辑: 只是另一个注意事项,如果运行此查询,返回99的能量,它必须将此修复为100,并且在同时运行的另一个查询中,我使用了一些能量。这可能导致这种用过的能量被“回馈”。对不起,我无法解释它更好= P查看MySQL事务。