Wypróbuj coś takiego:
$results = $stm1->fetch();
print_r($results);
while($results = $stm1->fetch()){
print_r($results);
}
W rzeczywistości nie potrzebujesz pętli, aby pobrać pierwszy element, a następnie możesz wznowić iterację z tym, co było twoją drugą pętlą.
Problem z
jest to, że jeśli w zestawie wyników znajduje się jeden lub więcej wyników, zawsze wywołaj $stm1->fetch()
dwa razy:raz po raz pierwszy wprowadzisz pętlę, a następnie drugi raz w drugiej iteracji, zanim faktycznie sprawdzisz, że ($iterator == 1)
nie jest już prawdą.
Jeśli w zestawie wyników znajdują się tylko dwa wyniki, zostanie to ujawnione w drugiej pętli, która nigdy nie zostanie wprowadzona (ponieważ pobieranie nie będzie miało żadnych wyników).