次のコードがあります。
<?php
//The company_array:
$company_array = array(
"AAA" => "AAA",
"BBB" => "BBB",
"CCC" => "CCC",
"DDD" => "DDD"
);
$platform_data = 'PC'; //Just to keep it short :)
foreach ($company_array as $company) {
if ($stmt = $mysqli->prepare("SELECT price, time FROM $company WHERE platform = ? ORDER BY time ASC")) {
$stmt->bind_param("s", $platform_data);
$stmt->execute();
$stmt->bind_result($price[$company], $time[$company]);
$i=0;
while ($stmt->fetch()) {
$company_info[$company][$i] = array('Price' => $price[$company], 'Time' => $time[$company]);
$i++;
}
$stmt->close();
}
?>
今、私はこれにいくつかの問題を抱えていました.ループの最後の反復が壊れているようです.$company_infoをすべて印刷すると、最後の会社は正常に表示されます.最後の会社はすべての行の最後の値を繰り返すようです:
Array
(
[AAA] => Array
(
[0] => Array
(
[Price] => 626.8600
[Time] => 2013-09-27 14:30:06
)
[1] => Array
(
[Price] => 615.5900
[Time] => 2013-09-27 15:45:05
)
[2] => Array
(
[Price] => 604.7400
[Time] => 2013-09-27 17:45:05
)
)
[BBB] => Array
(
[0] => Array
(
[Price] => 246.7200
[Time] => 2013-09-27 14:30:06
)
[1] => Array
(
[Price] => 245.4700
[Time] => 2013-09-27 15:45:05
)
[2] => Array
(
[Price] => 244.8300
[Time] => 2013-09-27 17:45:05
)
)
[CCC] => Array
(
[0] => Array
(
[Price] => 189.0900
[Time] => 2013-09-27 14:30:06
)
[1] => Array
(
[Price] => 188.9800
[Time] => 2013-09-27 15:45:05
)
[2] => Array
(
[Price] => 188.8900
[Time] => 2013-09-27 17:45:05
)
)
[DDD] => Array
(
[0] => Array
(
[Price] => 134.3100
[Time] => 2013-10-06 13:30:06
)
[1] => Array
(
[Price] => 134.3100
[Time] => 2013-10-06 13:30:06
)
[2] => Array
(
[Price] => 134.3100
[Time] => 2013-10-06 13:30:06
)
)
)
ご覧のとおり、AAA、BBB、および CCC という会社はすべて、それぞれの配列で異なる Price と Time を持っていますが、DDD という会社では、値が同じように異なるはずなのに、同じ値が 3 回繰り返されています (データベースの最後の値)。他の会社として。
foreach を使用する代わりに、配列で implode() を使用してそれを使用する必要がありますが、FROM フィールドで使用されている良い例が見つからないため、混乱します ( WHEREでのみ使用されるようです)
私の質問は、問題を引き起こしているように見えるため、foreach ループの使用を回避し、FROM フィールドで適切な implode() メソッドを使用するにはどうすればよいでしょうか?
出力が同じ形式のままになるように、while ループも変更する必要があると思います。