MYSQL Error : Warning: mysqli_fetch_assoc() expect

2019-03-07 05:29发布

问题:

This question already has an answer here:

  • mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc… expects parameter 1 to be resource or result 31 answers

Is there anything wrong with my sql query ? I always get this error "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given". Hope you can help me.

<?php
include("connection.php");
$mysqli->query("SET NAMES 'utf8'");
$filter = "All";

if ($filter == "All"){
    $sql="SELECT * FROM city ";
}else if($filter == "Alphabetically"){
    $sql="SELECT * FROM city order by cityName ASC";
}else if ($filter == "Region"){
    $sql="SELECT * FROM city order by region";
}else{
    echo "Error sql";
}
$result=$mysqli->query($sql);
while($e=mysqli_fetch_assoc($result)){
    $output[]=$e; 
}

print(json_encode($output)); 
$mysqli->close();
     ?>

回答1:

I assume you are connecting to the database using the OO mechanism in mysqli as that is what you are using for almost all your mysqli commands

But here

while($e=mysqli_fetch_assoc($result)){

you have changed to the proceedural function calls.

Instead use

while($e = $result->fetch_assoc()){


回答2:

If your query have any sql error or its returning 0 rows. So check first num_row count

$result=$mysqli->query($sql);
if(mysqli_num_rows($result) > 0 ){       
    while($e=mysqli_fetch_assoc($result)){
                    $output[]=$e; 
                }
        }
        print(json_encode($output)); 
        $mysqli->close();

For any mysql error.

 $mysqli->error;


标签: php mysql mysqli