我正在从数据库中检索一些数据并将其转换为JSON:
if ($result = $link->query($query)) {
while($row=mysqli_fetch_row($result)){
$json['results'][]=$row;
}
}
echo json_encode($json);
结果如下:
{"results":
[["1","0","123","456",null],
["2","0","567","978",null]]
}
但我也需要列名。
当我将其更改为mysqli_fetch_assoc
时,我在控制台中收到以下响应:
{"readyState":4,"responseText":"","status":200,"statusText":"OK"}
答案 0 :(得分:0)
mysqli_fetch_row
生成数字索引数组,如果您想要数据库列的名称,即关联数组使用$result->fetch_assoc()
同样最好在json结构中维护一些状态信息,然后传回表单,以便在AJAX调用的PHP执行过程中看到发生了什么。
这只是在开发过程中使用的一个简单示例
$json = array();
$json['status']['info'] = "Started";
$json['status']['count'] = 0;
if ($result = $link->query($query)) {
$json['status']['info'] = "Query OK";
while( $row = $result->fetch_assoc()){
$json['status']['count'] = $json['status']['count'] + 1;
$json['results'][] = $row;
}
} else {
// added so you get to see an error message if query fails
$json['status']['mysqlerror'] = $link->error;
}
echo json_encode($json);
exit;
这个输出你说你得到了
{"readyState":4,"responseText":"","status":200,"statusText":"OK"}
是来自PHP脚本的基本标头响应,您会看到"responseText":""
为空,这就是json字符串通常会出现的位置。因此,我必须假设当您修改PHP代码时,您会以某种方式引入错误。
此外,您使用mysqli的{OOP样式即
$link->query($query)
启动您的代码,但随后您转到了行为式mysqli_fetch_row($result)
虽然这实际上是合法的,但坚持使用OOP风格或Proceedural风格贯穿整个代码,如果只是为了在2天或2周内回复修改一段代码时的可读性。