Encoding json with php


Encoding json with php

所以事情是这样的:

我正在开发一个后端(php),它与微软SQL Server连接,并使用android应用程序作为用户界面。

然而,当涉及到用php编码json时,我面临着一个问题。

可以公平地说,我是php的初学者。

这是我的代码:

$result = sqlsrv_query( $conn, 'select * from table1');
 $row = sqlsrv_fetch_array($result);
 $array = array();
while($row =sqlsrv_fetch_array($result))
{
    $array[]=$row;
}
echo json_encode(array("data"=>array_values($array)));

因此,到目前为止,该表实际上什么都没有:只有两个属性:姓名和年龄

这里的问题是回报如下:

{"data":[{"0":"Miriana","name":"Miriana","1":null,"age":null},{"0":"Luke","name":"Luke","1":null,"age":null},{"0":"Sara","name":"Sara","1":null,"age":null},{"0":"Fuss","name":"Fuss","1":20,"age":20}]}

值前面总是有一个数字,然后是实数键和值。

例如:

"0":"Miriana"
 "1":null

非常感谢任何愿意查看此信息的人。

**我检查了这些链接:用PHP解码json不工作用PHP解析JSON用PHP编码JSON与数组的问题**

您需要指定提取类型:

while($row =sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))

默认情况下,您同时获得数字键和关联键。

您可能应该在循环之前删除fetch,因为您不会得到当前结果中的第一行。

sqlsrv_fetch_array的默认获取类型是SQLSRV_FETCH_BOTH,它以关联数组和数字数组的形式获取行,因此您可以同时获得这两种类型。如果只需要关联数组,请将sqlsrv_fetch_array的第二个参数设置为SQLSRV_FETCH_ASSOC

$result = sqlsrv_query( $conn, 'select * from table1');
$array = array();
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{
    $array[]=$row;
}
echo json_encode(array("data"=>array_values($array)));

删除了第一个获取,因为如果这样做,将不会获得第一行。

参考:http://php.net/manual/en/function.sqlsrv-fetch-array.php