1

我的 JSON 响应中似乎有多余的键。知道为什么吗?

以下是 JSON 响应的摘录:

{
      "0": "1",
      "id": "1",
      "1": "XX University",
      "name": "XX University",
      "2": "http:\/\/ree.com\/images\/xxUniversity.png",
      "backgroundImageUrl": "http:\/\/ree.com\/images\/XXUniversityLogo.png",
      "3": "http:\/\/ree.com\/images\/xxUniversity.png",
      "logoImageUrl": "http:\/\/ree.com\/images\/XXUniversityLogo.png"
    },

这是我的PHP代码:

$query = "SELECT * from $entity"; //Bad security,for a different question
    $results = mysqli_query($con,$query);

    //Parse to JSON
    $json=array();

    while($row=mysqli_fetch_array($results)){
        $json[]=$row;
    }

    //Close connection
    mysqli_close($con);

    //Encode and send response as JSON (using the entity type as a parameter)
    //echo json_encode(array($entity => $json), JSON_FORCE_OBJECT);

    echo json_encode(array ($entity =>$json)); 
4

2 回答 2

4

你的问题是mysqli_fetch_array。您想MYSQLI_ASSOC作为第二个参数传递。

while($row=mysqli_fetch_array($results,MYSQLI_ASSOC)){
    $json[]=$row;
}

从文档:

此可选参数是一个常量,指示应从当前行数据生成哪种类型的数组。此参数的可能值是常量MYSQLI_ASSOCMYSQLI_NUMMYSQLI_BOTH

通过使用MYSQLI_ASSOC常量,该函数的行为与 mysqli_fetch_assoc() 相同,而MYSQLI_NUM的行为与 mysqli_fetch_row() 函数相同。最后一个选项MYSQLI_BOTH将创建一个具有两者属性的数组。

于 2013-04-09T16:19:43.713 回答
1

mysqli_fetch_array默认检索数字和命名索引。

您必须指定其他参数才能仅获取所需的参数。

  • MYSQLI_ASSOC 检索命名数组,
  • MYSQLI_NUM 只检索索引的整数
  • MYSQLI_BOTH 两者都检索:)
于 2013-04-09T16:20:08.213 回答