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

Php Javascript只生成json编码数组的最后一个值,php,javascript,json,pdo,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

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

var myjson=JSON.parse(“”);
document.write(myjson);

我认为这可能与“JSON.parse”有关,但我不确定。提前谢谢

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


另外,您正在while循环中初始化数组。这意味着它将在每次循环时覆盖自身

您应该响应最终结果,而不是每次迭代:

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

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


    }
 echo json_encode($result_array);
试一试

…而不是在每次循环中初始化和输出数组。

为您的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();
    }

没有理由这样使用
JSON.parse()
。您可以直接将JSON作为“myjson”变量的值放入JavaScript源代码中。Pointy,如果我想将JSON传递给数组,那么该变量是否简单为-“var myjson=[];”如果您想将对象值放入JavaScript数组中,那么是的。
    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();
    }