$data = array();
while ( $row = $result->fetch_assoc() ){
$data[] = json_encode($row);
}
echo json_encode( $data );
Cela devrait le faire. Vous pouvez également utiliser http://jsonlint.com/ pour voir quels sont les problèmes avec votre sortie JSON.
Mise à jour : en utilisant fetch_all()
peut être une bonne idée aussi
$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );