$data = array();
while ( $row = $result->fetch_assoc() ){
$data[] = json_encode($row);
}
echo json_encode( $data );
Това трябва да го направи. Също така можете да използвате http://jsonlint.com/ за да видите какви са проблемите с вашия JSON изход.
Актуализация: използвайки fetch_all()
може също да е добра идея
$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );