0

次のコードがあります。

<?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 ループも変更する必要があると思います。

4

0 に答える 0