2011-12-14 54 views
2

我正在创建一个作为私人项目的小游戏。用户可以死亡并进入医院我正在寻找一种简单的方法来在一个查询中更新他们的信息,但它涉及用行中另一个单元格更新该行的一个单元格。我这样做,到目前为止是这样的:使用MySQL行数据更新另一个?

// UPDATE USERS WHO SHOULD NOT BE IN HOSPITAL 
$q = $dbc -> prepare("SELECT id, maxLifeforce FROM accounts WHERE hospitalTime < NOW() AND inHospital = 1"); 
$q -> execute(); 
while ($account = $q -> fetch(PDO::FETCH_ASSOC)) { 
    $q = $dbc -> prepare("UPDATE accounts SET inHospital = 0, lifeforce = ? WHERE id = ?"); 
    $q -> execute(array($account['id'], $account['maxLifeforce'])); 
} 

这个工程,我想,但有没有更新符合第一报表准则而设置lifeforce到该行的maxlifeforce如果是有道理的所有行的方式。我听说在while循环中使用查询并不是一个好习惯。

回答

2

我想你想是这样的:

UPDATE accounts 
    SET inHospital = 0, 
     lifeforce = maxLifeforce 
WHERE hospitalTime < NOW() 
    AND inHospital = 1; 

既然你想拉出来的数据在同一个表的同一行中,更新等栏目,它的话说SET lifeforce = maxLifeforce一样简单。

+0

是的,但这是行特定?账户可以有不同的maxLifeforce? – cgwebprojects 2011-12-14 18:37:56

相关问题