Můžete to udělat bez použití funkce PHP využitím funkce group_concat MySQL, která dělá přesně to, co hledáte:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Vrátí jeden sloupec s "John" a druhý sloupec s "data1,data2". Poté můžete použít funkci explode() PHP ve druhém sloupci a získat pole obsahující "data1" a "data2".