php json_encode错过了第一条记录

时间:2010-12-23 14:19:43

标签: php recordset json

我正在检索一个.php文件,该文件json_encodes记录集的结果。

它生成的json很好,但它错过了记录集中的第一条记录,

所以,如果我有21行,它只创建一个有20条记录的json对象,第一条缺失。

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 个答案:

答案 0 :(得分:1)

我建议构建一个包含所有数据的Array,然后使用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).'}';

答案 1 :(得分:1)

简单的解决方案!!!

我将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).'}';
?>