我最近一直在开发一款MMORPG游戏。几乎完成了,只需创建每日cron ..
我有以下代码:
// Bank Interest
$res = $db->query("
SELECT uid,
id,
rm_days,
bank
FROM sys_users
LEFT JOIN sys_users_stats ON sys_users.id = sys_users_stats.uid
") or die($db->error);
while ($row = $res->fetch_object()) {
$multiply = ($row->rm_days >= 1) ? 0.04 : 0.02;
$interest = ($row->bank >= 15000000) ? ceil(15000000 * $multiply) : ceil($row->bank * $multiply);
$res = $db->query("UPDATE sys_users_stats SET bank = bank + $interest");
$rjdRPG->addEvent($row->uid, "You have gained $$interest bank interest.");
}
一切正常,它甚至会在游戏中向我发送事件:
您已获得24美元的银行利息。 2015年12月1日下午09:20
如果我手动运行它,只有SSH / Crontab返回错误(测试目的)它正在返回:
PHP致命错误:在第22行的/home/RJDGaming/tm/crons/daily.php中调用非对象的成员函数fetch_object()
但它正在将bank
列更新为正确的数量。并发出通知,所以似乎一切都好,但我不知道如何解决PHP致命错误,因为一切正常。 $db->error
没有返回任何内容,所以我在这里有点迷失。
非常感谢指向正确方向的手指。
答案 0 :(得分:1)
问题是你在循环中更新$res
:
$res! while($row = $res->fetch_object()) {
$multiply = ($row->rm_days >= 1) ? 0.04 : 0.02;
$interest = ($row->bank >= 15000000) ? ceil(15000000 * $multiply) : ceil($row->bank * $multiply);
$res! $res = $db->query("UPDATE sys_users_stats SET bank = bank + $interest");
$rjdRPG->addEvent($row->uid, "You have gained $$interest bank interest.");
}