0

これがPHP/PDOです。

    try {





    $query = 'SELECT Date,Close FROM DY_AAPL LIMIT 5';


    $sth = $db->prepare($query);
    $sth->execute();


    while ($row = $sth->fetch(PDO::FETCH_ASSOC)){

        $result_array=array();
        $result_array[]=$row['Close'];

    /*    $num = $row['Close'];    */

        echo json_encode($result_array);



    }


    }catch (PDOException $e){

        echo 'ERROR ' . $e->getMessage();
    }

javascriptを使用して配列にアクセスしようとすると、配列の最後の値のみが出力されます。ポインタはありますか?

    <script type="text/javascript">

       var myjson = JSON.parse('<?php echo json_encode($result_array); ?>');

        document.write(myjson); 

    </script>

「JSON.parse」と関係があるのではないかと思いましたが、よくわかりません。前もって感謝します!

4

4 に答える 4

1

試す

$result_array = array();

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {

    $result_array[]=$row['Close'];

   /*    $num = $row['Close'];    */

}

echo json_encode($result_array);

…各ループターンで配列を初期化して出力する代わりに。

于 2013-01-28T21:29:46.897 に答える
0

これは、while ループ内で json エンコードを行っているためです。ループの外側に配置して、配列全体がエンコードされるようにします。

また、while ループ内で配列を初期化しています。つまり、ループするたびに自分自身を上書きします。

于 2013-01-28T21:27:21.380 に答える
0

すべての反復ではなく、最終結果をエコーする必要があります。

   while ($row = $sth->fetch(PDO::FETCH_ASSOC)){

        $result_array=array();
        $result_array[]=$row['Close'];


    }
 echo json_encode($result_array);
于 2013-01-28T21:28:14.513 に答える
0

PHPでこれを試してください:

    try {
        $query = 'SELECT Date,Close FROM DY_AAPL LIMIT 5';
        $sth = $db->prepare($query);
        $sth->execute();

        $result_array=array();
        while ($row = $sth->fetch(PDO::FETCH_ASSOC)){
            $result_array[]=$row['Close'];
        }
        echo json_encode($result_array);

    }catch (PDOException $e){

        echo 'ERROR ' . $e->getMessage();
    }
于 2013-01-28T21:30:54.577 に答える