2011-12-14 19 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

相關問題