Wykonujesz zapytanie i przechowujesz zasób wynikowy w $result1, a następnie pobierasz wszystkie wiersze w pętli, które wywołujesz echem, a następnie natychmiast próbujesz pobrać go ponownie. Po pobraniu wszystkich wyników nie możesz ich ponownie pobrać. Cóż, możesz, używając mysql_data_seek, ale w większości przypadków jest to naprawdę nieefektywne i marnotrawne. Zapisz wyniki po raz pierwszy w tablicy.
$rows = array();
while ($row = mysql_fetch_assoc($result1)) {
$rows[] = $row;
}
Następnie możesz foreach przez tę tablicę.
foreach ($rows as $row) {
// Build the binary notification
$msg = chr(0).pack('n', 32).pack('H*', $row['devicetoken']) . pack('n', strlen($payload)) . $payload;
//... etc
}