$studentArray= implode(',', json_decode($result[$i]));
$tempStudent = Array(); 
$allStudentArray = $mysqli->query("SELECT `id`,`name` FROM `student` WHERE id IN  (".$studentArray.") ");
while($row =$allStudentArray->fetch_assoc()){
$tempStudent[] = $row;
}
$returnApi[$i] = $tempStudent;报错信息是:Fatal error: Call to a member function fetch_assoc() on boolean in D:\xampp\htdocs\xxx\three\f
查了很长时间没找到怎么回事我尝试:
1、$studentArray= implode(',', json_decode($result[$i]));
$tempStudent = Array(); 
$allStudentArray = $mysqli->query("SELECT `id`,`name` FROM `student` WHERE id IN  (".$studentArray.") ");
print_r($allStudentArray);   //输出查询
while($row =$allStudentArray->fetch_assoc()){
$tempStudent[] = $row;
}
结果是:mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 3 [type] => 0 ) mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 2 [type] => 0 ) 
Fatal error: Call to a member function fetch_assoc() on boolean in D:\xampp\htdocsxxx\three\f
已经查询到值,但是为什么循环呢
2、我又尝试 $studentArray= implode(',', json_decode($result[$i]));
$tempStudent = Array(); 
$allStudentArray = $mysqli->query("SELECT `id`,`name` FROM `student` WHERE id IN  (".$studentArray.") ");
echo json_encode($row =$allStudentArray->fetch_assoc());
echo json_encode($row =$allStudentArray->fetch_assoc());
echo json_encode($row =$allStudentArray->fetch_assoc());
echo json_encode($row =$allStudentArray->fetch_assoc());
while($row =$allStudentArray->fetch_assoc()){
$tempStudent[] = $row;
}
输出结果是:{"id":"1","name":"\u54c8\u54c8"}{"id":"2","name":"12"}{"id":"3","name":"12"}null{"id":"1","name":"\u54c8\u54c8"}{"id":"3","name":"12"}nullnull
Fatal error: Call to a member function fetch_assoc() on boolean in D:\xampp\htdo
这个值是正确的,因为WHERE id IN  (".$studentArray.") 中的$studentArray = 1,2,3   , 值都查出来,就是无法输出
这到底是怎么回事,我查了好久也没看出来是怎么回事,求告知。谢谢

解决方案 »

  1.   

    php 都告诉你 Fatal error: Call to a member function fetch_assoc() on boolean in .... 了,为何视而不见?
    $allStudentArray 不存在 fetch_assoc()  方法,因为他是逻辑值
    这就表示你的查询失败了:
    $allStudentArray = $mysqli->query("SELECT `id`,`name` FROM `student` WHERE id IN  (".$studentArray.") ");
    你可以 echo $mysqli->error; 看看是什么情况你所谓的查了好久,只是在变化代码,做文字游戏
    并没有溯根求源,根据错误信息追踪下去
    并自信的称 sql指令没有问题
    殊不知,出现那个错误的原因就是 sql指令错了