0

我将此脚本设置为每 5 分钟运行一次的 cron 作业,问题是它不会像我认为的那样增加能量水平。如果有人能告诉我我在这里做错了什么,那就太好了。请记住,这不会返回任何错误,只是不起作用,数据库连接信息也是正确的,只是在帖子之外。

{

    $energy = mysql_query("SELECT energy FROM members WHERE  id=$id");
    //get current users energy level
    $energy_max = mysql_query("SELECT energy-Max FROM members WHERE  id=$id");
    //get current users Maximum energy level

        if ($energy < $energy_max)
        // do -if current energy level is less than maximum
            {
                $energy = $energy ++;
                //increment energy by 1
                mysql_query("UPDATE members SET energy= $energy");
                //set the new energy level
            }
                $id++;
                //increment to the next user
}
4

3 回答 3

3

您可以在单个语句中解决所有问题

UPDATE `members` SET `energy` = `energy` + 1 WHERE `energy-Max` > `energy`;

这样你就有一个而不是 3 * 成员数查询

于 2013-02-15T00:29:06.280 回答
0

mysql_query不返回值,只返回所谓的查询 id。您必须获取实际数据:

$query = mysql_query("SELECT energy FROM members WHERE  id=$id");
$val = mysql_fetch_assoc($query); // Now the data is in $val['energy']

当然,您可以通过这个(如其他答案中所指出的)更快地做到这一点:

UPDATE members SET energy = energy + 1 WHERE energy < energy-Max;
于 2013-02-15T00:30:28.167 回答
0

您忘记了id = $id更新语句中的 WHERE。

 mysql_query("UPDATE members SET energy= $energy WHERE id = $id");

但是 KingCrunch 的答案更好..

于 2013-02-15T00:30:55.507 回答