PHP数组不会与MySQL的数据填写 [英] PHP array wont fill with mysql data
问题描述
可能重复:结果
如何办理的MySQL结果两次?
我有一个循环内循环的PHP脚本。外环走下每个$单元阵列在$ unitsarray和查询的一个MySQL数据库,以查看是否有具有相同的匹配串的条目。如果$ RESULT1确实返回项(S),我创建了另一个数组名为$ devicetokens该行devicetoken数组,然后进入我的第二个循环。对于每个设备的道理,我创建一个苹果推送通知发送到iOS设备。我有两个问题,第一个请求mysql_query回报什么。如果我知道我将返回呐条目的值替换$单元,然后它的作品。其次,如果我更换$单位,得到的结果回来,$ devicetokens阵列不会与任何数据填充,即使我有一个结果,从MySQL查询回来。这里是我的code:
I have a PHP script with a loop within a loop. The outer loop walks down an array for each $unit in the $unitsarray and query's a MySQL db to see if there is an entry with the same matching string. If $result1 does indeed return an entry(s), I create another array called $devicetokens array for the row "devicetoken" and then enter my second loop. For each device token, I create an Apple Push Notification to send to an iOS device. I have two problems, first the mysql_query returns nothing. If I replace $unit with a value I know will return na entry, then it works. Second, if I have replace the $unit and get a result back, the $devicetokens array wont populate with any data even though I have a result back from the mysql query. Here is my code:
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;
}
}
下面就是我的数据库是这样的:
Here's what my db looks like:
device_id devicetoken unit
T05 ipad 773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4 121
E05 ipad 773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4 121
任何帮助将大大AP preciated!
Any help would be greatly appreciated!
推荐答案
您正在做一个查询,并在$ RESULT1存储结果,然后获取在你回声出一个循环中的所有行,然后立即试图把它拿来再次。一旦你获取所有的结果,你不能再获取它们。那么你可以使用mysql_data_seek,但它确实低效和浪费在大多数情况下这样做。存储结果首次在数组中。
You are doing a query and storing a result resource in $result1, then fetching all the rows in a loop that you echo out, then immediately trying to fetch it again. Once you fetch all the results, you can't fetch them again. Well you can, using mysql_data_seek, but it's really inefficient and wasteful to do so in most cases. Store the results the first time in an array.
$rows = array();
while ($row = mysql_fetch_assoc($result1)) {
$rows[] = $row;
}
然后就可以通过这个数组的foreach。
Then you can foreach through this 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
}
这篇关于PHP数组不会与MySQL的数据填写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!