2016-07-18 178 views
5

Io uso PHP per recuperare una riga dal MySQL e lo codifica in JSON utilizzando il seguente codiceritorno JSON da MySQL con Nome colonna

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

Tuttavia, ho solo le i valori di riga. Voglio valori di righe con i loro nomi di colonne. Attualmente restituisce il seguente JSON.

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

Vorrei avere il seguente output:

[{ 
    "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" 
}] 
+0

ha a essere in quel formato o si può prima fila solo essere un array di nomi di colonna? Se la prima riga è il nome della colonna, non si stanno ripetendo i dati e si ottengono comunque i valori. – bassxzero

+9

Usa 'mysqli_fetch_assoc' invece di' mysqli_fetch_row' – splash58

+2

Il [PHP mysqli Manual] (http://php.net/manual/en/book.mysqli.php) Quando tutto il resto fallisce potresti provare a leggere quella idea errata – RiggsFolly

risposta

4

Usa mysqli_fetch_assoc()

Qui si va

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

Grazie ... Ha funzionato !! –

4

Si dovrebbe provare while($row = mysqli_fetch_assoc($result)).

Dovrebbe restituire il risultato con i rispettivi nomi di campo.

È possibile trovare la pagina di manuale here.

+0

Grazie ... Ha funzionato !! –

+1

Sono contento di poter essere d'aiuto: 3 Buona giornata. – PockeTiger

2

Si consiglia di utilizzare mysqli_fetch_assoc qui in modo che restituisca la chiave come nome di colonna. mysqli_fetch_row restituisce invece i tasti numerici dell'array.

Prova questo:

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

Grazie ... Ha funzionato !! –

1

Solo una nota, non è necessario eseguire un ulteriore addslashes(), è possibile aggiungere JSON_UNESCAPED_SLASHES come il secondo argomento di json_encode().

+0

Questo non risolve veramente la domanda e probabilmente sarebbe meglio come commento. –

+0

Concordato, tuttavia con funzionalità di commento limitata per app mobile non riesco a ottenere la formattazione corretta dei blocchi di codice. – mulquin

0

Proprio così se qualcun altro si imbatte in questo nell'anno 2018, ecco l'esempio completo.

<?php 

header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli("host", "user", "password", "db_name"); 
$result = $conn->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); 
} 

?> 

...

Problemi correlati