如果while循环中的语句没有更新数据库中的所有用户

时间:2014-10-16 16:46:24

标签: php database loops if-statement while-loop

我试图更新数据库中的所有用户,每次运行此脚本时都会获得+5轮次。

但它只更新数据库中的第一个用户,直到它完全转弯,然后更新下一个用户。

我需要做什么才能为所有用户增加5个回合但如果他们有100/100回合则不添加任何用户?

<?php

include ("functions/db_connect.php");

$get_users = mysqli_query($db, "SELECT * FROM `members`") or die(mysql_error());
while($user = mysqli_fetch_assoc($get_users)){

    if ($user['current_turns'] < $user['max_turns']) {
        $update = mysqli_query($db, "UPDATE `members` SET
                                `current_turns`=`current_turns`+'5' WHERE `id`='".$user['id']."'") or die(mysql_error());
        header("Location: users.php");
        exit();

    }
}

?>

1 个答案:

答案 0 :(得分:0)

尝试使用这样的查询来同时更新所有成员,而不是全部选择它们并循环更新它们。

UPDATE members 
SET current_turns = LEAST(max_turns, current_turns + 5)
WHERE current_turns < max_turns

使用LEAST函数将允许current_turns增加到max_turns而不会超过,因为我认为这是不可取的,但它确实取决于两列都不为。