1

mmorpg の経験値ベースのランク システムを作成しています。2つのテーブルがあるとしましょう。

  • table1: ユーザー名 - 式
  • table2: ランク名 - 指数

各ランクに昇格するには、特定の量の経験値が必要です。ここで、ユーザー名を考えてみましょう: 私には 550 の経験値があり、table2 には次のものがあります。

  • ランク1 - 200
  • ランク2 - 600

私のexpはexp列の値ではありませんが、テーブル2のexpと比較してexpをチェックすることにより、まだランク1にいることをphp関数に伝えてもらいたいと思います。私は最善を尽くしました。

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result,
boolean given in... line 6

ここに私のコードがあります:

function expToRank($userexp)
{
   global $mysqli;
   $sql="SELECT TOP 1 *
         FROM table2
         WHERE ABS(".$userexp."-exp) =
         ( SELECT MIN( ABS(".$userexp."-exp)) from table2 )";
   $result=mysqli_query($mysqli,$sql);
   $rankarray=mysqli_fetch_array($result,MYSQLI_ASSOC);
   $rankname=$rankarray["rankname"];
   return $rankname;
}

ヒント: 2 つの exp 列は BIGINT(60) です。

4

2 に答える 2

5

expクエリを使用して、特定の値を下回る最高ランクを見つけることができorder byます。MySQL では、limit代わりにtop次を使用します。

select  * 
from    ranktable
where   exp < $userexp
order by
        exp desc
limit   1
于 2013-05-20T23:02:32.800 に答える