可能重复:
如何通过 mysql 结果两次?
我有一个循环内循环的 PHP 脚本。外部循环遍历 $unitsarray 中每个 $unit 的数组,并查询 MySQL 数据库以查看是否存在具有相同匹配字符串的条目。如果 $result1 确实返回了一个条目,我为“devicetoken”行创建另一个名为 $devicetokens 数组的数组,然后进入我的第二个循环。对于每个设备令牌,我创建一个 Apple 推送通知以发送到 iOS 设备。我有两个问题,首先 mysql_query 什么都不返回。如果我将 $unit 替换为我知道会返回 na 条目的值,那么它可以工作。其次,如果我替换了 $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
任何帮助将不胜感激!