Ich habe einen PHP-Code, der DB-Tabellendaten in JSON codieren muss. Also habe ich json_encode() verwendet.
Ich verwende die hier angegebenen Tabellen – http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/
Das Verhalten dieses Codes scheint für verschiedene Eingaben unterschiedlich zu sein.
Die Abfrage – $query = "SELECT * FROM countries ";
gibt keine JSON-Werte zurück.
Die Abfrage –$query = "SELECT * FROM countries where continent_code="AS"";
gibt json-Werte korrekt zurück.
wohingegen,$query = "SELECT * FROM countries where continent_code="EU"";
gibt auch nichts zurück.
Ebenso funktionierten ‘NA’, ‘AF’ nicht und andere funktionierten perfekt.
Ich bin seltsam von diesem Verhalten von PHPs json_encode.
Das ist mein 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);
?>
Bis zur vorherigen Zeile von json_encode werden die Daten übertragen. Ich denke also, es ist ein Problem mit der JSON-Codierung.
Ich habe versucht, es mit herauszufinden print_r($orders);
.
Ich habe die folgende Ausgabe davon.
Wenn ich nach ‘EU’ versuche, bekomme ich dieses Array.
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 )...
Wenn ich nach ‘AS’ versuche, bekomme ich dieses Array.
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)...
Beide Arrays sehen gleich aus, richtig … Aber Json_encode funktioniert nur auf ‘AS’ und nicht auf ‘EU’.
Weiß jemand, wie man dieses Problem löst? Wenn ja, sagen Sie es mir bitte..
Ich denke, das Problem sind die “Åland-Inseln”, weil json_encode Probleme damit hat, dass das “Å” ein seltsamer Unicode ist. Versuchen Sie, Ihre mysql_connection auf UTF-8 zu setzen
– Andresch Serj
15. November 2013 um 11:12 Uhr