Tente algo como:
$results = $stm1->fetch();
print_r($results);
while($results = $stm1->fetch()){
print_r($results);
}
Na verdade, você não precisa de um loop para obter o primeiro elemento e, em seguida, pode retomar a iteração com o que costumava ser seu segundo loop.
O problema com
é que se houver um ou mais resultados no conjunto de resultados, você sempre chamar
$stm1->fetch()
duas vezes:uma vez na primeira vez que você entrar no loop, e então uma segunda vez na segunda iteração antes de realmente verificar se ($iterator == 1)
não é mais verdade. Se houver apenas dois resultados em seu conjunto de resultados, isso se manifestará no segundo loop nunca sendo inserido (porque a busca não terá nenhum resultado restante).