Javascript只生成json编码数组的最后一个值

时间:2013-01-28 21:23:31

标签: php javascript json pdo

这是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>

我认为这可能与&#39; JSON.parse,&#39;但我不确定。提前谢谢!

4 个答案:

答案 0 :(得分:1)

尝试

$result_array = array();

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

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

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

}

echo json_encode($result_array);

...而不是在每个循环回合中初始化和输出数组。

答案 1 :(得分:0)

这是因为你在while循环中进行json编码。将它放在循环外部,以便对整个数组进行编码。

此外,您正在while循环中初始化数组。这意味着每次循环时它都会覆盖自己。

答案 2 :(得分:0)

你应该回应你的最终结果,而不是每次迭代:

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

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


    }
 echo json_encode($result_array);

答案 3 :(得分: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();
    }