Sie können dies ohne die Verwendung einer PHP-Funktion tun, indem Sie die group_concat-Funktion von MySQL nutzen, die genau das tut, wonach Sie suchen:
SELECT name, group_concat(`data`) FROM table GROUP BY name;
Gibt eine Spalte mit "John" und eine zweite Spalte mit "data1,data2" zurück. Sie können dann die explode()-Funktion von PHP für die zweite Spalte verwenden, um ein Array zu erhalten, das "data1" und "data2" enthält.