重複の可能性:
mysql の結果を 2 回調べるには?
ループ内にループがある PHP スクリプトがあります。外側のループは、$unitsarray 内の各 $unit の配列をたどり、MySQL データベースにクエリを実行して、同じ一致する文字列を持つエントリがあるかどうかを確認します。$result1 が実際にエントリを返す場合、行 "devicetoken" に対して $devicetokens 配列と呼ばれる別の配列を作成し、2 番目のループに入ります。デバイス トークンごとに、Apple プッシュ通知を作成して iOS デバイスに送信します。2 つの問題があります。1 つ目は、mysql_query が何も返さないことです。$unit を na エントリを返すことがわかっている値に置き換えると、機能します。第 2 に、$unit を置き換えて結果を取得した場合、mysql クエリから結果が返されたとしても、$devicetokens 配列にデータが入力されません。これが私のコードです:
foreach ($unitsarray as $unit) {
echo "Unit = $unit </br>";
// Create array of devices that match the unit
$result1 = mysql_query("SELECT * FROM `department devices` WHERE unit LIKE '%$unit%'") or die(mysql_error());
//Print results
while ($row = mysql_fetch_assoc($result1)) {
echo " ";
echo $row["device_id"];
echo " , ";
echo $row["devicetoken"];
echo " , ";
echo $row["unit"];
}
echo "</br>";
$devicetokenarray = array();
while ($row = mysql_fetch_assoc($result1)) {
array_push($devicetokenarray, $row["devicetoken"]);
}
// Print array
print_r($devicetokenarray);
echo "</br>";
// Loop APNS for each device token in $devicetoken array
foreach ($devicetokenarray as $devicetoken)
{
// Build the binary notification
$msg = chr(0).pack('n', 32).pack('H*', $devicetoken).pack('n', strlen($payload)).$payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
// Create APNS operation output
if (!$result)
echo 'Failed message'.PHP_EOL;
else
echo "<b>Successful message sent:</b> $call - $location - $station - $units to device(s): '$devicetoken </br>".PHP_EOL;
}
}
私のデータベースは次のようになります。
device_id devicetoken unit
T05 ipad 773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4 121
E05 ipad 773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4 121
どんな助けでも大歓迎です!