PHP MySQLi多查询-命令不同步:MySQLi\u fetch\u数组
我目前正在用PHP创建一个页面,该页面将显示一个用户及其在我的网站高分中的排名 我遇到了一个问题,我的MySQL查询没有按预期运行,但是,@VladBalmos在这里解决了我的问题: 现在我相信我的MySQL查询可以正常运行了,我需要解决PHP代码中出现的问题。这是我的密码:PHP MySQLi多查询-命令不同步:MySQLi\u fetch\u数组,php,mysqli,Php,Mysqli,我目前正在用PHP创建一个页面,该页面将显示一个用户及其在我的网站高分中的排名 我遇到了一个问题,我的MySQL查询没有按预期运行,但是,@VladBalmos在这里解决了我的问题: 现在我相信我的MySQL查询可以正常运行了,我需要解决PHP代码中出现的问题。这是我的密码: $userid = (int) $_GET['searched']; for ($i = 0; $i < 5; $i++) { if ($i == 0) { $skil
$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_数组期望参数1是mysqli_结果,布尔值在第156行的[path]/personal.php中给出
命令不同步;现在无法运行此命令
警告:mysqli_fetch_数组期望参数1是mysqli_结果,布尔值在第159行的[path]/personal.php中给出
命令不同步;现在无法运行此命令
警告:mysqli_fetch_数组期望参数1为mysqli_结果,布尔值在第161行的[path]/personal.php中给出
命令不同步;现在无法运行此命令
所以,我的问题是,如何纠正这个错误
$rank_query = mysqli_multi_query($database, $yourQuery);
if($rank_query) {
while(mysqli_next_result($dabatase)) {
if($result = mysqli_store_result($database)) {
while($row = mysqli_fetch_row($result) {
// do something
}
}
}
}
您必须循环查看多个查询的结果,然后访问每个结果集的行。因为第一个查询只设置了一个变量,所以您必须跳到下一个结果集并获取实际行,这就是为什么我要*whilemysqli\u next\u result*
阅读上的文档啊,我想我在尝试时忘记了mysqli_next_结果。谢谢你的帮助!: