php从mysql中获取多行

时间:2018-03-18 21:26:12

标签: html mysql database fetch

我想成为前六名用户

我想从mysql中提取每行的最高值及其用户名。

<?php  
    include_once 'config.php';  

    $query = $config -> prepare("
SELECT `UserID`
    , `Humanity`
    , `Headshots`
    , `Murders`
    , `BanditsKilled`
    , `ZombiesKilled`
    , `pAliveTime` 
 FROM `users` 
 ORDER 
      BY `UserID` ASC 
   LIMIT 10
 ");  
    if($query -> execute())  
    {  
        $query_results = $query->fetchAll();

    }  
?>

然后在html中

<div class="colw_3 spec-l border-right">
          <p></p><p><strong><em><font color="white">Humanity</font></em></strong><br>
          </p>
          <p><strong><em><font color="white">Headshots:</font></em></strong><br>
          </p>
          <p><strong><em><font color="white">Bandits Killed:</font></em></strong><br>
          </p>
          <p><strong><em><font color="white">Murders</font></em></strong><br>
          </p>
          <p><strong><em><font color="white">Zombies Killed</font></em></strong><br>
          </p>
          <p><em><strong><font color="white">Alive Time:</font></strong></em><br>
          </p>
        </div>
        <!-- END col_6 -->

        <div class="colw_3 paddbott100 spec-r">
          <p></p><p><strong><font color="white"> <?php echo $query_result["Humanity"]; ?></font></strong><br>
          </p>
          <p><strong><font color="white"> <?php echo $query_result["Headshots"]; ?></font></strong><br>
          </p>
          <p><strong><font color="white"> <?php echo $query_result["BanditsKilled"]; ?></font></strong><br>
          </p>
          <p><strong><font color="white"> <?php echo $query_result["Murders"]; ?></font></strong><br>
          </p>
          <p><strong><font color="white"> <?php echo $query_result["ZombiesKilled"]; ?></font></strong><br>
          </p>
          <p><strong><font color="white"> <?php echo $query_result["pAliveTime"]; ?></font></strong><br>
          </p>
        </div>

但我不知道应该如何编写查询,以便获取这些值的值和用户名

它看起来应该是这样的

Humanity:5000 - 用户名的值。 (没有价值) Bandits Killed:4 - Username的值(另一个用户名,或相同的用户名,取决于谁在BanditsKilled列上具有最高值)

目前,我的代码按用户ID升序。

1 个答案:

答案 0 :(得分:1)

您可以对列进行循环并执行由列排序的查询,限制为一行:

$top_users = [];
$columns = ['Humanity', 'Headshots', 'Murders', 'BanditsKilled', 'ZombiesKilled', 'pAliveTime'];
foreach ($columns as $column) {
    $query = $config->prepare("SELECT UserID, UserName, $column as num FROM users ORDER BY $column DESC LIMIT 1");
    if($query->execute()) {
        $top_users[$column] = $query->fetch();
    }
}

print_r($top_users);

可能的(理论上的)输出:

Array(
    [Humanity]      => Array([UserId] => 21, [UserName] => foo1, [num] => 5)
    [Headshots]     => Array([UserId] => 22, [UserName] => foo2, [num] => 4)
    [Murders]       => Array([UserId] => 23, [UserName] => foo3, [num] => 8)
    [BanditsKilled] => Array([UserId] => 24, [UserName] => foo4, [num] => 7)
    [ZombiesKilled] => Array([UserId] => 25, [UserName] => foo5, [num] => 5)
    [pAliveTime]    => Array([UserId] => 26, [UserName] => foo6, [num] => 2)
)

所以你可以获得价值观:

foreach ($top_users as $column => $data) {
    echo $data['UserName'] . ' : ' . $data['num'] ;
}