获取列名称

时间:2016-01-28 16:25:42

标签: php json

我正在从数据库中检索一些数据并将其转换为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"}

1 个答案:

答案 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周内回复修改一段代码时的可读性。