php json_encode ne fonctionne pas sur les tableaux partiellement
J'ai un code PHP qui doit coder la table DB données en json.
J'ai donc utilisé json_encode().
- Je utiliser les tableaux donnés ici - http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/
Le comportement de ce code semble être différents pour les différentes entrées.
La requête de $query = "SELECT * FROM countries ";
ne pas retourner tout json valeurs.
La requête de$query = "SELECT * FROM countries where continent_code='AS'";
renvoie du json correctement les valeurs.
alors que,$query = "SELECT * FROM countries where continent_code='EU'";
aussi ne rien retourner.
De même 'NA','AF' ne fonctionne pas et d'autres, le travail parfait.
Je suis bizarre de ce comportement de PHP json_encode.
C'est mon code.
<?php
$con=mysqli_connect('localhost','xxxx','xxxxx','joomla30');
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM countries where continent_code='EU'") or die (mysqli_error($con));
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$orders[] = array(
'CountryCode' => $row['code'],
'CountryName' => $row['name']
);
}
//print_r($orders);
echo json_encode($orders);
mysqli_close($con);
?>
Jusqu'à la ligne précédente de json_encode, les données sont transportées. Donc je pense que sa json encoder problème.
J'ai essayé de le savoir à l'aide de print_r($orders);
.
J'ai obtenu le résultat suivant.
Si j'essaie de "EU", j'obtiens ce tableau.
Array ( [0] => Array ( [CountryCode] => AD [CountryName] => Andorra )
[1] => Array ( [CountryCode] => AL [CountryName] => Albania )
[2] => Array ( [CountryCode] => AT [CountryName] => Austria )
[3] => Array ( [CountryCode] => AX [CountryName] => Åland Islands )...
Si j'essaie de "COMME", j'obtiens ce tableau.
Array ( [0] => Array ( [CountryCode] => AE [CountryName] => United Arab Emirates )
[1] => Array ( [CountryCode] => AF [CountryName] => Afghanistan)
[2] => Array ( [CountryCode] => AM [CountryName] => Armenia)
[3] => Array ( [CountryCode] => AZ [CountryName] => Azerbaijan)...
Les deux tableaux ressemble tant à droite...
Mais Json_encode ne fonctionne que sur les " as "et pas pour "UE".
Personne ne sait comment résoudre ce problème ?
Si oui, les pls me dire..
source d'informationauteur vsriram92 | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
Vous devriez assurez-vous que tous les composants de votre application web utilise l'UTF-8. Cette réponse à partir d'une autre question va vous dire comment faire cela. Si vous lire ce de RFC4627:
La fonction json_encode exige que toutes les données entrantes pour être codé en UTF-8. C'est pourquoi les chaînes de caractères comme
Åland Islands
sont probablement à l'origine des problèmes.Juste une estimation aléatoire ici:
json_encode
exige que toutes les données que vous nourrissez pour être codé en UTF-8 et il échoue sinon. Ces pays où il échoue, vous avez probablement de données qui contient des caractères non-ASCII. Pur ASCII arrive à être compatible avec l'encodage UTF-8, les caractères non-ASCII, vous devez prendre soin de. Voir UTF-8 tout le chemin à travers pour comment obtenir codé en UTF-8 des données de votre base de données (utilisationmysqli_set_charset
).