2015-12-28 71 views
1

獲取行位置我有一個MySQL表如下所示:與多個MySQL查詢和PHP

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中的排名位置。全部在一個頁面中。

首先,我不知道如何獲得用戶的排名位置......例如,如果我想輸出喬的第一場比賽的排名,當然我可以做一個ORDERBY'比賽1',但是我怎麼才能得到喬的等級呢?

第二:是否有可能在單個查詢中獲得Joe對遊戲1,遊戲2和遊戲3的排名,還是必須執行3個單獨的查詢?

謝謝你的幫助,真的很感激。

+0

'某處回聲$結果「但我怎麼喬秩」' - 在'WHERE'關鍵詞看看。例如:'SELECT * FROM MyTable WHERE player ='Joe''(順便說一下,這會排除任何對'ORDER BY'的需求,因爲您正在識別單個記錄。) – David

+0

'ORDER BY'有什麼處理這個問題?它看起來像你想要的信息只是在每一行。 –

回答

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

+0

如果'player'已經識別出記錄,那麼ID列並不是完全必要的。 – David

+0

@大衛是真的,我只是認爲這可能是一個好主意,如果他不強制獨特的球員名字 – silversunhunter

+0

是的我有唯一的ID,我在我的表中省略。我看了你的答案,看起來非常好,你給我看OO查詢的好方法,但我認爲它會輸出遊戲1,遊戲2,遊戲3列的內容。大概我在我的描述中並不清楚:那些專欄的內容是玩家點:我需要命令他們獲得這個職位。這是我的問題。 – marcello