Hola,
Creo que tienes razon, que es:
Código PHP:
while ($fila = $consulta->filas_afectadas()) {
Con esto estas diciendo que ejecute el bucle mientras el valor devuelto por filas_afectadas() no sea false. Sin saber el codigo de esa funcion, no se si tiene la culpa. Pero espera, antes tienes una linea:
Código PHP:
if ($consulta->filas_afectadas() > 0) {
Si esta linea hace lo que su nombre y el uso en esta linea parece, su funcion es la de devolver el numero de registros devueltos por la consulta (como mysql_num_rows()). Si esto es cierto, su uso en el while es incorrecto. En esa clase quizas existe un metodo que realiza la misma funcion que la funcion mysql_fetch_array(). Esa es la que deberias usar en el while.
Saludos.