Stai eseguendo una query e archiviando una risorsa di risultato in $result1, quindi recuperando tutte le righe in un ciclo che esce, quindi provando immediatamente a recuperarlo di nuovo. Dopo aver recuperato tutti i risultati, non puoi recuperarli di nuovo. Bene, puoi, usando mysql_data_seek, ma è davvero inefficiente e dispendioso farlo nella maggior parte dei casi. Memorizzare i risultati la prima volta in un array.
$rows = array();
while ($row = mysql_fetch_assoc($result1)) {
$rows[] = $row;
}
Quindi puoi eseguire il foreach attraverso questo array.
foreach ($rows as $row) {
// Build the binary notification
$msg = chr(0).pack('n', 32).pack('H*', $row['devicetoken']) . pack('n', strlen($payload)) . $payload;
//... etc
}