Du kan göra detta utan att använda en PHP-funktion genom att dra fördel av MySQL:s group_concat-funktion som gör precis vad du letar efter:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Returnerar en kolumn med "John" och en andra kolumn med "data1,data2". Du kan sedan använda PHP:s explode()-funktion i den andra kolumnen för att få en array som innehåller "data1" och "data2".