Puede hacer esto sin el uso de una función PHP aprovechando la función group_concat de MySQL que hace exactamente lo que está buscando:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Devolverá una columna con "John" y una segunda columna con "data1,data2". Luego puede usar la función explotar () de PHP en la segunda columna para obtener una matriz que contenga "datos1" y "datos2".