PHP中的json_编码未返回正确结果
我试图将数据输入到一个具有CRUD操作的网格中,该网格称为Jquery JTable,但从MYSQL表到Json的Json转换似乎存在某种错误,因为要在表上显示数据,它需要如下所示:PHP中的json_编码未返回正确结果,php,mysql,json,error-handling,Php,Mysql,Json,Error Handling,我试图将数据输入到一个具有CRUD操作的网格中,该网格称为Jquery JTable,但从MYSQL表到Json的Json转换似乎存在某种错误,因为要在表上显示数据,它需要如下所示: { "Result":"OK", "Records":[ {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"}, {"PersonId":2,"Name"
{
"Result":"OK",
"Records":[
{"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},
{"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},
{"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},
{"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}
]
}
但每当我在php中实现json_encode
函数时,它都会给我以下信息:
{
"Result":"OK",
"Records":[
{"0":"1","PersonId":"1","1":"Benjamin Button","Name":"Benjamin Button","2":"17","Age":"17","3":"2011-12-27 00:00:00","RecordDate":"2011-12-27 00:00:00"},
{"0":"2","PersonId":"2","1":"Douglas Adams","Name":"Douglas Adams","2":"42","Age":"42","3":"2011-12-26 00:00:00","RecordDate":"2011-12-26 00:00:00"},
{"0":"3","PersonId":"3","1":"Isaac Asimov","Name":"Isaac Asimov","2":"26","Age":"26","3":"2011-12-28 00:00:00","RecordDate":"2011-12-28 00:00:00"},
{"0":"4","PersonId":"4","1":"Thomas More","Name":"Thomas More","2":"61","Age":"61","3":"2011-12-27 00:00:00","RecordDate":"2011-12-27 00:00:00"},
{"0":"5","PersonId":"5","1":"Ihsan Oktay Anar","Name":"Ihsan Oktay Anar","2":"44","Age":"44","3":"2012-01-03 20:55:02","RecordDate":"2012-01-03 20:55:02"}
]
}
以下是我的PHP代码:
<?php
//Get records from database
$result = mysqli_query($conn, "SELECT * FROM people;");
//Add all records to an array
$rows = array();
while($row = mysqli_fetch_array($result))
{
$rows[] = $row;
}
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['Records'] = $rows;
print json_encode($jTableResult);
?>
该表名为people,它有四个字段:personId
、Name
、Age
和RecordDate
如果您有任何想法,我们将不胜感激。您可能希望尝试该功能 因为根据PHP文档,关于: 获取结果行作为关联数组、数字数组或两者兼有 这就是您目前在代码中遇到的情况,因为默认的抓取模式是
MYSQLI\u BOTH
:
... "1":"Benjamin Button","Name":"Benjamin Button" ...
您也可以使用mysqli\u fetch\u array()
,但您必须调整fetch模式,然后:
mysqli_fetch_array($result, MYSQLI_ASSOC);
您正在使用返回索引键(
0/1/2/etc.
)的mysqli\u fetch\u array
),您想要使用mysqli\u fetch\u assoc()
或者简单地将其更改为:mysqli\u fetch\u array($result,mysqli\u assoc)
在结果中没有点循环作为数组,如果只是将它们单独存储为一个数组。您不妨只做$rows=mysqli\u fetch\u array($result)
并使用$rows代码>这看起来也像是一个评论,在他们开始投票给你之前,只需在上面展开更多的碎片。到目前为止,所有的内容都是这么说的。