$data = array();
while ( $row = $result->fetch_assoc() ){
$data[] = json_encode($row);
}
echo json_encode( $data );
Dies sollte es tun. Sie können auch http://jsonlint.com/ verwenden um zu sehen, was die Probleme mit Ihrer JSON-Ausgabe sind.
Aktualisierung: mit fetch_all()
könnte auch eine gute Idee sein
$data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );