$data = array();
while ( $row = $result->fetch_assoc() ){
$data[] = json_encode($row);
}
echo json_encode( $data );
Isso deve servir. Além disso, você pode usar http://jsonlint.com/ para ver quais são os problemas com sua saída JSON.
Atualização: usando
fetch_all()
pode ser uma boa ideia também $data = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $data );