2011-03-31 56 views
0

我有一个PHP脚本构造来响应数据的ajax调用,这是一个mySQL数据库中的两个列“Date”,“Value”形式的日期,每周间隔。JSON编码丢弃其他所有值

最终,我想通过设置一个会话变量来将结果返回给调用页面,以将系列数据保存在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阵列,以便它可以通过调用页面系列中的所有其他值被丢弃在后面操纵。 T

作为创建最终数组对象的中间步骤,我使用下面的代码来简单地编码和回显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的东西,所以它可能显而易见。

感谢

+0

刚注意到hmtl标签已经全部被剥离出上面的代码,所以可能有点混乱。 – nortyrich 2011-03-31 07:42:06

回答

0

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

您应该使用在json_encode调用中获取的$row

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

正确的代码是:

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

每次调用mysql_fetch_array行是获取时间。

+0

感谢bicccio&typo.pl!这对你们来说可能很明显 – nortyrich 2011-03-31 12:08:58