Php 使用MySQL行数据更新另一行数据?

Php 使用MySQL行数据更新另一行数据?,php,mysql,Php,Mysql,我正在创建一个小游戏作为一个私人项目。用户可能会死亡并进入医院我正在寻找一种简单的方法在一个查询中更新他们的信息,但它涉及到用行中的另一个单元格更新行中的一个单元格。到目前为止,我是这样做的: // UPDATE USERS WHO SHOULD NOT BE IN HOSPITAL $q = $dbc -> prepare("SELECT id, maxLifeforce FROM accounts WHERE hospitalTime < NOW() AND inHospital

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

// 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']));
}
UPDATE accounts
   SET inHospital = 0,
       lifeforce = maxLifeforce
 WHERE hospitalTime < NOW()
   AND inHospital = 1;
//更新不应住院的用户
$q=$dbc->prepare(“从hospitalTimeexecute();
而($account=$q->fetch(PDO::fetch_ASSOC)){
$q=$dbc->prepare(“更新内部设置的帐户=0,lifeforce=?其中id=?”;
$q->execute(数组($account['id'],$account['maxLifeforce']);
}

这是我想要的,但如果有意义的话,在将
lifeforce
设置为该行的
maxleforce
时,无法更新所有符合第一条语句标准的行。我听说在while循环中使用查询并不是很好的做法。

我想您需要这样的东西:

// 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']));
}
UPDATE accounts
   SET inHospital = 0,
       lifeforce = maxLifeforce
 WHERE hospitalTime < NOW()
   AND inHospital = 1;
更新帐户
将不同心设置为0,
寿命=最大寿命
WHERE hospitalTime

因为您希望从同一个表中提取数据以更新同一行中的其他列,所以只需说
SET-lifeforce=maxLifeforce

是,但这是特定于行的吗?而帐户可以有不同的maxLifeforce?@cgwebprojects:正确。
SET
语句在每一行的上下文中运行,因此对于每一行,该行的
lifeforce
设置为该行的
maxleforce
的值。这是
UPDATE
语句的要点之一。您可以在测试数据上尝试一次,看看是否得到预期的结果。