現在、サイトのハイスコアでユーザーとそのランクを表示するページを PHP で作成しています。
MySQL クエリが意図したとおりに機能しないという問題がありましたが、@VladBalmos がここで問題を解決しました: MySQL Highscores - User's Personal Ranks: Duplicate Entries Causing Incorrect Values
MySQL クエリが機能していると確信したので、PHP コードで発生した問題に対処する必要があります。これが私のコードです:
$userid = (int) $_GET['searched'];
for ($i = 0; $i < 5; $i++) {
if ($i == 0) {
$skill_query = mysqli_query($database, "SELECT uid, overall, overallxp, gamelevel FROM playerstats WHERE uid = ". $userid ." ORDER BY playerstats.overall DESC, playerstats.overallxp DESC") or print(mysqli_error($database));
$skill_array = mysqli_fetch_array($skill_query);
//old rank query: $rank_query = mysqli_query($database, "SELECT count(*) + 1 FROM (SELECT uid, overall, overallxp, gamelevel FROM playerstats GROUP BY playerstats.uid) AS x WHERE overall > (SELECT overall FROM playerstats WHERE uid = ". $userid .")") or print(mysqli_error($database));
$rank_query = mysqli_multi_query($database, "SET @rank=0; SELECT rank, uid, overall, overallxp FROM (SELECT @rank:=@rank + 1 AS rank, uid, overall, overallxp FROM playerstats ORDER BY overall DESC, overallxp DESC) as tmp") or print(mysqli_error($database));
$rank_array = mysqli_fetch_array($rank_query);
} else {
$skill_query = mysqli_query($database, "SELECT uid, ". $skills[$i] .", gamelevel FROM playerstats WHERE uid = ". $userid ." ORDER BY playerstats.". $skills[$i] ." DESC, playerstats.gamelevel DESC") or print(mysqli_error($database));
$skill_array = mysqli_fetch_array($skill_query);
$rank_query = mysqli_query($database, "SELECT count(*) + 1 FROM (SELECT uid, ". $skills[$i] .", gamelevel FROM playerstats GROUP BY playerstats.uid) AS x WHERE ". $skills[$i] ." > (SELECT ". $skills[$i] ." FROM playerstats WHERE uid = ". $userid .")") or print(mysqli_error($database));
$rank_array = mysqli_fetch_array($rank_query);
}
echo "<tr class='hs_row'>";
echo "<td align='center'>";
echo $rank_array[0]; //rank output
echo "</td>";
echo "<td align='center'>";
echo $skill_array[1]; //skilllevel
echo "</td>";
echo "<td align='center'>";
if ($i == 0) {
echo number_format($skill_array[2]); //skillxp
} else {
echo number_format($skill_array[1]); //skillxp
}
echo "</td></tr>";
}
...そして、私が受け取っているエラーは次のとおりです。
警告: mysqli_fetch_array() は、パラメーター 1 が [path]/personal.php の 156 行で指定されたブール値の mysqli_result であることを想定しています。
コマンドが同期していません。現在、このコマンドを実行することはできません
警告: mysqli_fetch_array() は、パラメーター 1 が [path]/personal.php 行 159 で指定されたブール値の mysqli_result であることを期待します
コマンドが同期していません。現在、このコマンドを実行することはできません
警告: mysqli_fetch_array() は、パラメーター 1 が [path]/personal.php の 161 行目に指定されたブール値の mysqli_result であることを想定しています。
コマンドが同期していません。現在、このコマンドを実行することはできません
それで、私の質問は、どうすればこのエラーを修正できますか?