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 回答