Puoi farlo senza l'uso di una funzione PHP sfruttando la funzione group_concat di MySQL che fa esattamente quello che stai cercando:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Restituirà una colonna con "John" e una seconda colonna con "data1,data2". È quindi possibile utilizzare la funzione esplode() di PHP sulla seconda colonna per ottenere un array contenente "data1" e "data2".