php mysql 通过 cron 更新

标签 php mysql

我有一个通过 cron 运行的 php 文件。为了测试,我将它设置为每小时运行一次,但通常它会每天运行一次。我想要做的是,如果玩家将 autotechrefinery 字段设置为 1,那么他们应该从表​​格中拉出他们的人口,他们有多少钱、研究用品和技术。

从那里,我想要的是扣除 500 研究供应,增加 50 技术,并从金钱中扣除 10% 的人口。当我手动运行该文件时,所有这些似乎都有效,但是当我让它通过 cron 自动运行时,有些东西不起作用,结果它将技术设置为 50,将研究供应设置为 -500,将资金设置为 0 .

$refCheck = mysql_query("SELECT * FROM players WHERE autotechrefinery='1'");
while($rC = mysql_fetch_array($refCheck)) {

$nation = $rC['nation'];
$pop = $rC['population'];
$rsupplies = $rC['researchsupplies'];
$cash = $rC['money'];
$tech = $rC['technology'];

$newtech = $tech+50;
$newmoney = $cash-($pop*.1);
$newsupplies = $rsupplies-500;

mysql_query("UPDATE players SET money='$newmoney', technology='$newtech', researchsupplies='$newsupplies', techbought='1' WHERE autotechrefinery='1'"); }

最佳答案

您的代码中的错误是:UPDATE 将始终更新所有条目。因此,所有条目都将获得循环最后一次传递时分配的值。

要修复代码,您需要一些 ID 来识别行并在更新中使用它:

$refCheck = mysql_query("SELECT * FROM players WHERE autotechrefinery='1'");
while($rC = mysql_fetch_array($refCheck)) {   
  $ID = $rC['id'];
  $nation = $rC['nation'];
  $pop = $rC['population'];
  $rsupplies = $rC['researchsupplies'];
  $cash = $rC['money'];
  $tech = $rC['technology'];

  $newtech = $tech+50;
  $newmoney = $cash-($pop*.1);
  $newsupplies = $rsupplies-500;

  mysql_query("UPDATE players SET money='$newmoney', technology='$newtech', researchsupplies='$newsupplies', techbought='1' WHERE id="$ID');
}

您没有要求改进,但您可以使用一条 SQL 语句获得相同的结果:

UPDATE players set money=money - population * .1, technology = technology + 50, researchsupplies = researchsupplies - 500;

关于php mysql 通过 cron 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002628/

相关文章:

php - 在 PHP 中为 iPad 用户代理加载 css

mysql - 使用连接计算列的总和

php - 来自子查询的 Doctrine QueryBuilder

java - hibernate删除多对多关联

php - OpenCart 中的权限被拒绝?

php - 无法用冒号解析 xml 数据 (:) from response using getNamespaces()

PHP:发送 POST 请求然后读取 XML 响应?

php - 如何使用php获取附件中上传的文件名

MySQL 按多个日期和结果分组总计

mysql - 读取端延迟和响应能力