$data = array();
while ( $row = $result->fetch_assoc() ){
$data[] = json_encode($row);
}
echo json_encode( $data );
Detta borde göra det. Du kan också använda http://jsonlint.com/ för att se vad som är problemen med din JSON-utgång.
Uppdatering: med fetch_all()
kan också vara en bra idé
$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );