我正在检索一个.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).'}';
但这只会产生一个空白页。
答案 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).'}';
?>