JSON Encode отбрасывает все остальные значения - PullRequest
0 голосов
/ 31 марта 2011

У меня есть скрипт php, созданный для ответа на вызов ajax для данных, который представляет собой два столбца из базы данных mySQL в форме «Дата», «Значение», с датами после недельного интервала.

В конечном итоге я хочу вернуть результат на вызывающую страницу, установив переменную сеанса для хранения данных серии в массиве, закодированном в 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 Я что-то вроде новичка, так что, вероятно, это явноочевидно.

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Правильный код:

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

Каждый раз, когда вы вызываете mysql_fetch_array, строка извлекается.

0 голосов
/ 31 марта 2011

Проблема в том, что ваш цикл while выбирает строку, а затем при вызове json_encode код выбирает новую строку.

Вы должны использовать $row, который вы выбрали вjson_encode Звоните.

while ($row=mysql_fetch_array($res_Data,MYSQL_NUM)) {
    echo json_encode($row)." ";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...