gpt4 book ai didi

php - 获取并更新表中所有行的列

转载 作者:行者123 更新时间:2023-11-29 22:43:42 24 4
gpt4 key购买 nike

我正在开发一个游戏,我希望有一个脚本每分钟运行一次(我猜是在 cron 作业的帮助下)。

因此,我想要运行的脚本获取角色的最大生命值(来自数据库表中的列),计算得到该值的 10%,然后将这 10% 添加到角色的当前生命值(即表中的另一列)。然后我想对数据库表中的所有行进行迭代。

例如考虑下表:

charname      current_hp      max_hp
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
player1 20 30
player2 15 64
player3 38 38

运行脚本后,我希望表格如下所示:

charname      current_hp      max_hp
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
player1 23 30
player2 21 64
player3 38 38

所以,我知道如何在技术上实现这一点,例如

$characters = $db->getCharacterList();

foreach ($characters as $character) {
$maxHp = $character['max_hp'];
$curHp = $character['current_hp'];
$hpToAdd = $maxHp / 10;

if (($curHp + $hpToAdd) >= $maxHp) {
$db->update('characters', $character['id'], array(
'current_hp' => $maxHp
));
} else {
$db->update('characters', $character['id'], array(
'current_hp' => ($curHp + $hpToAdd)
));
}
}

我唯一的问题是:上面发布的解决方案是实现此目的的有效方法吗?这是否适用于具有 10 000 行的表,或者是否会花费太长时间?

提前致谢。

最佳答案

您使用的是 SQL 数据库吗?如果您有 10,000 行,您的解决方案将访问数据库 10,000 次。像这样的 SQL 语句只会命中一个数据库:

UPDATE characters
SET current_hp = LEAST(max_hp, current_hp + (max_hp / 10))

数据库仍然需要执行更新所有 10,000 行所需的 I/O,但它会比数千个单独查询更有效。

关于php - 获取并更新表中所有行的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com