我正在帮助一些PHP设计朋友文本游戏,并且已经陷入困境。
我已安排一个cron作业来调用以下页面/以下代码,这是正常工作
<?php require("connect.php"); ?>
<?php
$sql = "SELECT id, name, health FROM users";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($query);
while($row = mysql_fetch_object($query)) {
$id = htmlspecialchars($row->id);
$name = htmlspecialchars($row->name);
$health = htmlspecialchars($row->health);
$sql = "SELECT * FROM property WHERE living='1' AND ownerid='$id'";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($query);
while($row = mysql_fetch_object($query)) {
$OwnerName = htmlspecialchars($row->ownername);
$OwnerID = htmlspecialchars($row->ownerid);
$RaidPropBonus = htmlspecialchars($row->raidperc);
$RaidPropMoney = htmlspecialchars($row->raidcash);
$PropertyLvl = htmlspecialchars($row->proplvl);
$Living = htmlspecialchars($row->living);
if($PropertyLvl == '5' && $Living == '1'){
if($health < '100'){
$result = mysql_query("UPDATE users SET health=$health + '1' WHERE id='$id'")
or die(mysql_error());
} else { }
} else { }
}
}
?>
虽然这仅适用于一个用户。我不明白为什么会这样。已忽略符合条件的任何其他登录/注销帐户。我可能只觉得我错过了一个循环?首先遇到的ID是1号,它已停在那里了吗?
任何人都可以建议吗?
UPDATE - 看起来是正确的我需要在那里得到一个循环,但到目前为止还没有让这个循环正常工作。无论我在哪里修改/添加一个循环它都无济于事。请有人建议吗?
UPDATE2 - 根据要求,使用新版本的循环更新
答案 0 :(得分:0)
对于我已经理解的内容,应该在mysql_fetch_object
上进行循环,以获取查询中的每一行。
看看代码段
<?php
require("connect.php");
// here prepare the $userQuery (the one that fetches all users)
// then the first loop that will read each usew row
// AFAICT this should afect all script
while($userRow = mysql_fetch_object($userQuery))
{
// prepare data fetched from the $userQuery
// prepare the $propertyQuery (the one that fetches all properties of the user)
// then the second loop to read all user property rows
// and this will afect the updates
while($propertyRow = mysql_fetch_object($propertyQuery))
{
// prepare data fetched from $propertyQuery
// add logic here
}
}
?>
另外@Matthew Carpenter有一个有效的观点,mysql_*
已被弃用,你应该考虑使用mysqli_*
,或者我认为看一下PDO