以下に示すように、「ポイント」という名前のテーブルがあります。
名前 | 点 abc 10 コード 5 efg15
特定の名前のランクを見つける方法は?
例: 上記の場合、cde のランク 3
これはあなたのSQLクエリになります:
SELECT t.name FROM sometable t ORDER BY t.point DESC;
PHPでクエリを実行すると、ソートされた結果セットが得られます。次に、自分の名前が見つかるまで、その結果セットを数えます。それがあなたのランクです。ランクを別の方向に移動させたい場合は、に変更DESC
します。ASC
関数の内容は次のようになります。
$rankingQuery = SELECT t.name FROM sometable t ORDER BY t.point DESC;
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$rank = 0;
$sth = $dbh->prepare($rankingQuery);
$sth->execute();
$name = $sth->fetchColumn();
while ($name) {
$rank = $rank + 1;
if ($name == $DESIRED_NAME {
return $rank;
}
$name = $sth->fetchColumn();
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}