我的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));
答案 0 :(得分:4)
您的问题是mysqli_fetch_array
。您希望将MYSQLI_ASSOC
作为第二个参数传递。
while($row=mysqli_fetch_array($results,MYSQLI_ASSOC)){
$json[]=$row;
}
此可选参数是一个常量,指示应从当前行数据生成哪种类型的数组。此参数的可能值为常量 MYSQLI_ASSOC , MYSQLI_NUM 或 MYSQLI_BOTH 。
通过使用 MYSQLI_ASSOC 常量,此函数的行为与mysqli_fetch_assoc()相同,而 MYSQLI_NUM 的行为与mysqli_fetch_row()函数相同。最后一个选项 MYSQLI_BOTH 将创建一个包含两者属性的数组。
答案 1 :(得分:1)
mysqli_fetch_array检索数字和命名索引。
您必须指定其他参数才能获得所需的参数。