这是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;但我不确定。提前谢谢!
答案 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();
}