Vous pouvez le faire sans utiliser de fonction PHP en profitant de la fonction group_concat de MySQL qui fait exactement ce que vous recherchez :
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Retournera une colonne avec "John" et une deuxième colonne avec "data1,data2". Vous pouvez ensuite utiliser la fonction PHP explosion() sur la deuxième colonne pour obtenir un tableau contenant "data1" et "data2".