Может быть, проблема в том, что вы перебираете массив $ data в цикле while, я думаю, что вы хотите собрать все строки в $ data, и только когда перерывы while, для итерации, чтобы показать результаты.
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){
$data[] = $row;
}
foreach ($data as $row){
echo $row['...'];
}
Или я не так понял?