我想獲得用戶對錶中每個統計「列」的單一排名。我試圖更有效地做到這一點,因爲我知道你可以。如何使用PHP函數獲得表中多列的排名更有效
所以我有一個名爲userstats的表。在那個表中我有3列user_id,stat_1,stat_2和stat_3。我想讓我能夠獲得相關user_id的每個屬性的排名。與我目前的代碼下面我將不得不復制代碼3倍,並更改列名以獲得我的結果。請看下面的例子。謝謝!
這是我目前如何獲得等級爲用戶
$ rankstat1 = getUserRank($用戶ID);
<code>
function getUserRank($userid){
$sql = "SELECT * FROM ".DB_USERSTATS." ORDER BY stat_1 DESC";
$result = mysql_query($sql);
$rows = '';
$data = array();
if (!empty($result))
$rows = mysql_num_rows($result);
else
$rows = '';
if (!empty($rows)){
while ($rows = mysql_fetch_assoc($result)){
$data[] = $rows;
}
}
$rank = 1;
foreach($data as $item){
if ($item['user_id'] == $userid){
return $rank;
}
++$rank;
}
return 1;
}
</code>
我相信這是我的方式來獲得我需要的是這樣,但我不能讓它的工作。
$ rankstat1 = getUserRank($ userid,'stat_1'); $ rankstat2 = getUserRank($ userid,'stat_2'); $ rankstat3 = getUserRank($ userid, 'stat_3');
這裏的前提是錯誤的。你不想查詢數據庫來獲得每個等級(即你不想每個用戶調用你的getUserRank函數3次)。調用一次,然後解析結果以獲得所需的特定屬性。另外,避免SELECT *。在查詢中指定所需的列名稱。 –