当我阅读关于此功能的php手册时,我虽然正在执行它。 不幸的是我收到了这个错误:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given on line 94
使用此代码:
$upSQL = "SELECT * FROM rated_teams WHERE server='$server' AND name='$teamname' AND master='2' ORDER BY id ASC;";
$upSQL .="SELECT name, rating FROM rated_teams WHERE server='$server' AND master='1'";
//echo $upSQL. "<br />";
$upresult=mysqli_multi_query($con, $upSQL);
$i=1;
$j=1;
$myrating=0;
while($row = mysqli_fetch_array($upresult)) { //LINE 94
if ($row['win'] == 1 && $i <= 3) {
echo $i++ . "first 3 wins <br />";
$myrating+=10;
$j++;
} else {
if ($row['name'] == $opposer && $row['master'] == 1) {
echo $opposer . " " . $row['rating'];
echo $j++. " j<br />";
}
}
}
echo $myrating;
所以,直接的问题是:为什么这段代码不正确?
答案 0 :(得分:1)
mysqli_multi_query
方法返回一个布尔值,而方法mysqli_fetch_array
应该传递一个mysqli_result
,如错误告诉你的那样。您需要使用mysqli_store_result
方法,如下所示:
http://php.net/manual/en/mysqli.multi-query.php
使用此方法,您可以循环显示结果,如下所示:
if (mysqli_multi_query($con, $upSQL)) {
do {
if ($result = mysqli_store_result($con)) {
while ($row = mysqli_fetch_row($result)) {
$currentresult = $row[0];
}
mysqli_free_result($result);
}
} while (mysqli_next_result($con));
}
do-while确保在转到其他结果之前您的第一个结果存在,并获得该结果,然后在循环的while段中为您提供下一个结果。希望这有用。