Retornar JSON do MySQL com o Nome da Coluna

Uso PHP para buscar uma linha do MySQL e, em seguida, codificá-lo no JSON usando o seguinte código

$jsonData = array(); if(mysqli_num_rows($result) > 0){ while ($array = mysqli_fetch_row($result)) { $jsonData[] = $array; } $json = json_encode($jsonData); echo stripslashes($json); }` 

No entanto, eu só obto os valores da linha. Eu quero valores de linhas junto com os nomes de suas colunas. Atualmente, ele retorna o seguinte JSON.

 [["shekhar","Shekhar Chatterjee","https://graph.facebook.com/1254850974526564/picture","0"]],[["shek","Shekhar Chatterjee","","0"]] 

Gostaria de ter a seguinte saída:

 [{ "user":"shekhar", "name":"Shekhar Chatterjee", "url":"https://graph.facebook.com/1254850974526564/picture", "stat":"0" },{ "user":"shekhar", "name":"Shekhar Chatterjee", "url":"https://graph.facebook.com/1254850974526564/picture", "stat":"0" }] 

Use mysqli_fetch_assoc()

Aqui está

 $jsonData = array(); if(mysqli_num_rows($result) > 0){ while ($array = mysqli_fetch_assoc($result)) { $jsonData[] = $array; } $json = json_encode($jsonData); echo stripslashes($json); } 

Você deve tentar while($row = mysqli_fetch_assoc($result)) .

Ele deve retornar o resultado com os respectivos nomes de campo.

Você pode encontrar a página do manual aqui .

Você deve usar mysqli_fetch_assoc aqui, em vez disso, para que ele retorne a chave como os nomes das colunas. mysqli_fetch_row retorna as chaves da matriz numérica em vez disso.

Tente isso:

 if (mysqli_num_rows($result) > 0) { $jsonData[] = mysqli_fetch_assoc($result); } $json = json_encode($jsonData, JSON_PRETTY_PRINT); 

Apenas uma nota, você não precisa executar um additionallashes adicional addslashes() , você pode adicionar JSON_UNESCAPED_SLASHES como o segundo argumento de json_encode() .

 echo json_encode($jsonData, JSON_UNESCAPED_SLASHES); 

Assim, então, se alguém superar isso no ano de 2018, aqui está o exemplo completo.

 query("SELECT * FROM my_table"); $jsonData = array(); if(mysqli_num_rows($result) > 0){ while ($array = mysqli_fetch_assoc($result)) { $jsonData[] = $array; } $json = '{"my_data":'; $json .= json_encode($jsonData); $json .= '}'; echo stripslashes($json); } ?>