Prueba algo como:
$results = $stm1->fetch();
print_r($results);
while($results = $stm1->fetch()){
print_r($results);
}
En realidad, no necesita un bucle para obtener el primer elemento, y luego puede reanudar la iteración con lo que solía ser su segundo bucle.
El problema con
es que si hay uno o más resultados en el conjunto de resultados, siempre llamar a $stm1->fetch()
dos veces:una vez la primera vez que ingresa al ciclo, y luego una segunda vez en la segunda iteración antes de verificar que ($iterator == 1)
ya no es verdad.
Si solo hay dos resultados en su conjunto de resultados, eso se manifestará en el segundo ciclo y nunca se ingresará (porque no quedará ningún resultado en fetch).