【问题标题】:Looping through database [closed]循环通过数据库[关闭]
【发布时间】:2016-03-15 21:34:14
【问题描述】:

我想遍历我的玩家表并为每个玩家运行以下代码,我可以使用以下代码还是使用“else”错误选项,我需要它运行所有 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..
}

【问题讨论】:

  • 看起来像一个替我做的问题。职业训练局
  • 一些合理的代码缩进也会对理解代码大有帮助。更重要的是调试其中明显的错误
  • 因此,我们希望根据行数少于还是多于 20 行来计算后 5 名或后 10 名最低分数的总和。或者,如果分数低于 10,我们什么也不做。是这样吗?
  • RiggsFolly - 没有一个为我做的问题,更多的是做我应该使用的,或者我看错了,抱歉代码显示,仍在试图找出论坛。 2美分蒂姆,你是对的。基本上我想遍历我的用户表,并为它找到的每个用户,相应地应用 if 语句。

标签: php loops mysqli


【解决方案1】:

您可以执行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() 为您进行计算。

【讨论】:

  • 更多的是评论而不是答案!当心否决票
  • 感谢您的提醒,我刚开始投稿。有那种东西的参考吗?
  • 谢谢,不用担心这笔款项,因为我已经收到了帮助并进行了相应的更新,现在工作正常。所以基本上我可以使用 while 语句循环遍历 users 表,然后将找到的每个用户 id 应用于其中的 if 语句?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 2019-09-26
相关资源
最近更新 更多