循环访问数据库


Looping through database

我想遍历我的玩家表并为每个玩家运行以下代码,我可以使用以下选项还是使用"else"错误的选项,我需要它运行所有 if 语句以查看是否存在匹配,然后根据需要更新数据库。基本上我需要知道的是我是否在正确的轨道上,或者我应该考虑使用 do,而 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..
}

>你可以做一些类似的事情SELECT id FROM playersTable然后在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..
}

您可能还想检查您的总和逻辑,而不看到您的表结构 我认为array_sum不会做你想要的。您可以使用SQL SUM()为您进行计算。