Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库中循环_Php_Loops_Mysqli - Fatal编程技术网

Php 在数据库中循环

Php 在数据库中循环,php,loops,mysqli,Php,Loops,Mysqli,我想循环遍历我的players表,并为每个players运行以下代码,我是否可以使用以下选项或是否使用了其他错误选项,我需要它运行所有if语句以查看是否存在匹配,然后根据需要更新数据库。基本上,我需要知道的是,我是否在正确的轨道上,或者我应该考虑使用do、while、foreach、else、elseif、switch等。下面的代码只是一个示例。只是想理解这个理论 <?php $getresult = $conn->query('SELECT id FROM users'); wh

我想循环遍历我的players表,并为每个players运行以下代码,我是否可以使用以下选项或是否使用了其他错误选项,我需要它运行所有if语句以查看是否存在匹配,然后根据需要更新数据库。基本上,我需要知道的是,我是否在正确的轨道上,或者我应该考虑使用do、while、foreach、else、elseif、switch等。下面的代码只是一个示例。只是想理解这个理论

<?php
$getresult = $conn->query('SELECT id FROM users');
 while ($getrow = mysqli_fetch_array($getresult); {
    $player = $getrow['id'];

$result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC");
$row = $result->fetch_array();
$row_count = mysqli_num_rows($result);

if ($row_count...) {


}else{

    if ($row_count...) {

    }else{

         if () {

         }else{
  }
//SQL update statement would go here..
}

您可以从PlayerTable中选择id,然后在while循环中获取player_id,然后将其余代码移动到该循环中。这就是你要找的还是我遗漏了什么

// $player = $_SESSION['id'];
$playersResult = $conn->query('SELECT id FROM playersTable');
while ($playersRow = mysqli_fetch_array($playersResult); {
    $playerId = $playersRow['id'];

    $result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC");
    $row = $result->fetch_array();
    $row_count = mysqli_num_rows($result);

    if ($row_count >= 20) { // checks that at least 10 rows available
        $result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 10"); // select 10 lowest points
        while ($row = mysqli_fetch_array($result)) {
            $total = array($row['points']);
            $sum = array_sum($total);
            echo $sum;
        }
    }
    else if ($row_count>=10) { // checks that at least 10 rows available
        $result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 5"); // select 5 lowest points
        while ($row = mysqli_fetch_array($result)) {
            $total = array($row['points']);
            $sum = array_sum($total);
            echo $sum;
        } 
    }

    //SQL update statement would go here..
}

您可能还想检查求和逻辑,但不查看表结构,我认为数组_sum不会满足您的要求。您可以使用SQL总和为您进行计算。

看起来像是一个为我做的问题。VTCA一点合理的代码缩进对理解代码也有很大帮助。更重要的是,调试itSo中的明显错误,我们需要底部5或底部10最低分数的总和,这取决于行数是否少于或多于20行。或者,如果分数低于10分,我们什么也不做。这是对的吗?RiggsFolly-没有一个为我做的问题,更多的是做我应该使用的,或者我看这个都错了,为代码显示道歉,仍然试图找出论坛。2美分提姆,你说得有点对。基本上,我想在我的用户表中循环,对于它找到的每个用户,相应地应用if语句。与其说是答案,不如说是评论!当心下行银行,我才刚开始投稿。这类东西有参考资料吗?谢谢,不用担心总数,因为我已经收到了这方面的帮助,并进行了相应的更新,现在效果很好。所以基本上我可以使用while语句在users表中循环,然后将找到的每个用户id应用到其中的if语句?