php语句让多个用户无法正常工作

时间:2015-10-05 22:13:27

标签: php

我正在帮助一些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 - 根据要求,使用新版本的循环更新

1 个答案:

答案 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