JSON Encode正在丢弃其他所有值

时间:2011-03-31 07:35:49

标签: json

我有一个PHP脚本被构造用于响应数据的ajax调用,这是来自mySQL数据库的两个列,形式为“Date”,“Value”,日期跟随每周间隔。

最终我想通过设置会话变量将结果返回到调用页面来保存json编码数组中的系列数据。我不确定这是否是最合适的方法,因为我正在关注一些在线示例和教程的混搭,所以我只是在跳跃,我正在正确的轨道上。

到目前为止,我可以将结果渲染到调用页面上的html表中,如下所示,它给出了我期望的结果:

echo "<table border='1'>
<tr>
<th>Date</th>
<th>Value</th>
</tr>";

while($row=mysql_fetch_array($res_Data)) { 
    echo "<tr>";
   echo "<td>".$row['Date']."</td>";
   echo "<td>".$row['Value']."</td>";
   echo "<tr>";  


} 
echo "</table>";

这给了我下面的表格(这里没有边框复制):

Date       Value 
2009-07-12 47.09 

2009-07-19 45.48 

2009-07-26 87.03 

2009-08-02 59.96 

2009-08-09 52.82 

2009-08-16 29.20 

但是,当我尝试将数据编码为JSON数组以便稍后可以通过调用页面操作时,系列中的每个其他值都将被删除。 Ť

作为创建最终数组对象的中间步骤,我使用下面的代码,只需编码并回显msql查询的每一行,首先重置指针。

mysql_data_seek ($res_Data, 0);

while ($row=mysql_fetch_array($res_Data)) { 
      echo json_encode(mysql_fetch_array($res_Data,MYSQL_NUM))."<br/>";
}

这导致以下输出,其中每隔一周被删除:

["2009-07-19","45.48"]
["2009-08-02","59.96"]
["2009-08-16","29.20"]
["2009-08-30","99.35"]
["2009-09-13","99.35"]
["2009-09-27","17.17"]
["2009-10-11","276.64"]
["2009-10-25","336.03"]
["2009-11-08","439.28"]
["2009-11-22","383.82"]
["2009-12-06","512.04"]
["2009-12-20","796.64"]
["2010-01-03","1056.55"]

有没有人有任何想法可能会发生这种情况?

Ps我是一个noobie,所以它可能非常明显。

由于

2 个答案:

答案 0 :(得分:0)

问题是你的while循环正在获取一行,然后在你的json_encode调用中,代码正在获取一个新行。

您应该使用$row来电中提取的json_encode

while ($row=mysql_fetch_array($res_Data,MYSQL_NUM)) {
    echo json_encode($row)." ";
}

答案 1 :(得分:0)

正确的代码是:

while ($row=mysql_fetch_array($res_Data,MYSQL_NUM)) { 
    echo json_encode($row))."
"; }

每次调用mysql_fetch_array时都会获取该行。