Prova något som:
$results = $stm1->fetch();
print_r($results);
while($results = $stm1->fetch()){
print_r($results);
}
Du behöver faktiskt inte en loop för att få det första elementet, och sedan kan du återuppta iterationen med vad som brukade vara din andra loop.
Problemet med
är att om det finns ett eller flera resultat i resultatuppsättningen kommer du alltid anrop $stm1->fetch()
två gånger:en gång första gången du går in i loopen och sedan en andra gång vid den andra iterationen innan du faktiskt kontrollerar att ($iterator == 1)
är inte längre sant.
Om det bara finns två resultat i din resultatuppsättning, kommer det att visa sig i att den andra slingan aldrig kommer in (eftersom hämtning inte har några resultat kvar).