mio php si presenta così:PHP print_r funziona, ma json_encode ritorna vuota
$header = "Content-Type: application/json";
header($header);
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * ...";
$result = $conn->query($sql);
$array_1 = array();
if ($result->num_rows > 0) {
// output data as array
while($row = $result->fetch_assoc()) {
array_push($array_1, $row);
}
}
$conn->close();
print_r($array_1);
Il che mi dà il seguente output:
Array
(
[0] => Array
(
[user_email] => [email protected]
[order_item_name] => Abonnement
)
[1] => Array
(
[user_email] => [email protected]
[order_item_name] => Verlängerung
)
)
Questa uscita è il risultato di una query per e-mail, per restituire il nome del prodotto. In questo caso, se cambio print_r
con echo json_encode
non viene visualizzato nulla. Questo mi fa pensare che il problema ha a che fare con il set di caratteri, dato che il risultato non è vuoto, così ho aggiunto:
$header = "Content-Type: application/json; charset=utf-8";
header($header);
Ancora nessuna fortuna. Ho letto che potrebbe essere il caso che le funzioni di JSON * siano disabilitate, tuttavia, se cambio l'email dalla mia query, visualizza il risultato come sopra usando print_r
e come json usando echo json_encode
perfettamente bene. Deve essere da questo risultato la radice del problema o uno scenario simile. Può essere dovuto al carattere ä dal risultato? Ecco perché ho aggiunto utf-8 nell'intestazione.
Come ho detto sopra, se cambio l'email funziona, ma mostra solo 1 risultati invece 2 quando uso "[email protected]". Può essere che i risultati non siano inseriti correttamente nell'array? Credo che non sia dato che il formato formuli correttamente il risultato della query.
Qualcuno sa cosa sta succedendo?
Qual è l'output di 'var_dump ($ array_1) '? var_dump è sempre più utile per il debug;) –
Prova '$ json_string = json_encode ($ array_1); var_dump ($ json_string); ' – Brian
Entrambi, var_dump ($ array); quindi echo json_encode ($ array); Non c'è motivo per cui non funzioni. Se una funzione non esiste, si ottiene un avviso/errore che si sta utilizzando una funzione che non esiste. Assicurati di mostrare tutti gli avvisi usando error_reporting (E_ALL); – Loenix