我正在为我的mmorpg制作基于经验点的排名系统.假设我有2张桌子,
每个等级都需要特定数量的exp来升级.现在让我们说用户名:我有550 exp,而在table2我们有:
现在我想要php函数通过检查我的exp对表2 exp我仍然在rank1虽然我的exp不是exp列中的值.我尽了最大努力,得到了:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result,
boolean given in... line 6
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
提示:2 exp列是BIGINT(60).
我有两个表,用于级别(管理员,主持人,代理等)的“表A”和用于用户的“表B”,其中一列表示引用“表A”的级别ID。我希望存储过程将用户名归类,但结果必须在这样的一列中:
那是我的两张桌子:
TableA
+---------------------------+
|Level ID |Level Name |
+---------------------------+
|1 |Admin |
+---------------------------+
|2 |Moderator |
+---------------------------+
|3 |Agent |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
TableB
+---------------------------+
|Username |Level ID |
+---------------------------+
|John |1 |
+---------------------------+
|Sam |2 |
+---------------------------+
|Tommy |2 |
+---------------------------+
|Tony |3 |
+---------------------------+
|Patrick |3 |
+---------------------------+
|Jimmy |3 |
+---------------------------+
|Tod |3 |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
这就是我想要查询结果的方式:
+-------------+
|Admin |
+-------------+
| John |
+-------------+
| |
+-------------+
|Moderator |
+-------------+
| Sam |
+-------------+
| Tommy |
+-------------+ …Run Code Online (Sandbox Code Playgroud)