Możesz to zrobić bez użycia funkcji PHP, korzystając z funkcji group_concat MySQL, która robi dokładnie to, czego szukasz:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Zwróci jedną kolumnę z „John” i drugą kolumnę z „data1,data2”. Następnie możesz użyć funkcji explode() PHP w drugiej kolumnie, aby uzyskać tablicę zawierającą "data1" i "data2".