php json_encode пропускает первую запись - PullRequest
1 голос
/ 23 декабря 2010

Я получаю файл .php, который json_encodes кодирует результаты из набора записей.

он производит штраф json, но пропускает первую запись в наборе записей,

, так что если у меня есть 21строк он создает только объект json с 20 записями, при этом первая отсутствует.

function recordSetToJson($mysql_result) {
 $rs = array();
 while($rs[] = mysql_fetch_assoc($mysql_result)) {
    // you don´t really need to do anything here.
  }
 return json_encode($rs);
}
echo '{"myFiles":'.recordSetToJson($UserFiles).'}';

я пробовал:

function recordSetToJson($mysql_result) {
 $rs = array();
 do{
    // you don´t really need to do anything here.
  }
 return json_encode($rs);
}while($rs[] = mysql_fetch_assoc($mysql_result)) 
echo '{"myFiles":'.recordSetToJson($UserFiles).'}';

, но при этом получается пустая страница.

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

простое решение !!!

я добавил mysql_data_seek($mysql_result, 0); в функцию для сброса набора записей обратно в первый ряд, не знаю, почему он был перенаправлен на 1 запись в первую очередь, но это работаетсейчас.

полная функция:

<?php 
    function recordSetToJson($mysql_result) {
        $rs = array();
        mysql_data_seek($mysql_result, 0);
        while($rs[] = mysql_fetch_assoc($mysql_result)) {
            // dont need anything here!!
        }
        return json_encode($rs);
    };
echo '{"myFiles":'.recordSetToJson($UserFiles).'}';
?>
1 голос
/ 23 декабря 2010

Я предлагаю создать массив, который содержит все данные, а затем кодировать их, используя json_encode, это намного проще и проще в обслуживании.

function recordSetToJson($mysql_result) {
 $rs = array();
 while($row = mysql_fetch_assoc($mysql_result)) {
    array_push($rs,$row);
  }
 return json_encode($rs);
}
echo '{"myFiles":'.recordSetToJson($UserFiles).'}';
...