通过多个MySQL查询和PHP获取行位置

时间:2015-12-28 19:26:43

标签: php mysql

我有一个如下的MySQL表:

id | player | game 1 | game 2 | game 3
--------------------------------------
1  | Joe    | 345    | 34     | 64    
2  | Mark   | 12     | 256    | 35
3  | Dan    | 156    | 134    | 122

该表有大约20K条目。 列“游戏1”,“游戏2”,“游戏3”包含每个游戏的玩家积分。

我需要为每个玩家创建一个页面,我在游戏1,游戏2,游戏3中显示他们的排名位置。所有在一个页面中。

首先,我不知道如何获得用户的排名位置...例如,如果我想输出游戏1的Joe排名,当然我可以做ORDERBY'游戏1',但是那我怎么得到乔的等级呢?

第二:是否有可能在单个查询中获得Joe的第1场比赛,第2场比赛和第3场比赛的排名,还是我必须进行3次单独的查询?

感谢您的帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要在其中放置一个ID列,每次添加一个播放器时都会自动递增。然后根据用户的id拉行。

使用PDO

//Set your user Id somehow.. Maybe from a session or from your URL
$userId = trim(strip_tags($_GET['userId']));

//Then query your db and order by game 1 descending from highest score down to 0

$user_sth = $dbh->prepare("SELECT player, game 1, game 2, game 3 FROM players ORDER BY game 1 DESC")
$user_sth->execute();

//start the rank at 1
$rank = 1;

//create a variable to store our results in
$results = '';

//fetch the result array
while($user = $user_sth->fetch(PDO::FETCH_ASSOC){
    //maybe put it into a table row
    $results .= '<tr><td>'.$rank.'</td><td>'.$user['player'].'</td><td>'.$user['game 1'].'</td></tr>';

    //update our rank position number
    $rank++;
}

现在你可以在你的html

中的某个地方回显$ results