Короткий ответ: это плохо, очень плохо.
Беда в том, что вы платите неприятный удар по производительности (циклы и память!), Дважды повторяя результаты. (что если у вас будет возвращено 1000 строк? вы получите все данные, зациклите 1000 раз, сохраните все в памяти, а затем зациклите их снова).
Если вы немного реорганизуете свой класс, вы все равно можете обернуть запрос и выборку, но вы захотите выполнить fetch_array вне запроса. В этом случае вы можете удалить каждую строку из памяти, как только закончите, поэтому вам не нужно сохранять весь набор результатов, и вы зацикливаетесь только один раз.
IIRC, PHP не загружает весь набор результатов MySQL в память, в основном, когда вы вызываете mysql_fetch_array, вы запрашиваете следующую строку в наборе, которая загружается только после запроса, поэтому вы вы не платите за использование памяти для полного набора (на стороне PHP), просто запустив оригинальный запрос. Весь результат загружается в память, когда вы используете mysql_query (спасибо VolkerK), но вы все равно платите Стоимость процессора в два раза больше, и это может быть существенным штрафом.