Mam kod PHP, który musi zakodować dane tabeli DB w json. Użyłem więc json_encode().php json_encode nie działa częściowo na tablicach
używam tabel podanych tutaj - http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/
behavious tego kodu wydaje się być różny dla różnych wejść.
Zapytanie - $query = "SELECT * FROM countries ";
nie zwraca żadnych wartości json.
Kwerenda - $query = "SELECT * FROM countries where continent_code='AS'";
zwraca poprawnie wartości json.
podczas gdy $query = "SELECT * FROM countries where continent_code='EU'";
również nie zwraca niczego.
Podobnie "NA", "AF" nie działały, a inne działają idealnie.
Jestem dziwny z tego zachowania json_encode PHP.
To jest mój kod.
<?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);
?>
Do poprzedniej linii json_encode są przenoszone dane. Myślę więc, że jego problem z kodowaniem jsonów.
Próbowałem się o tym dowiedzieć, używając print_r($orders);
.
Otrzymałem od niego następujące dane wyjściowe.
Jeśli spróbuję dla "UE", otrzymam tę tablicę.
Jeśli spróbuję "AS", otrzymam tę tablicę.
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)...
Obie macierze wygląda alike prawo ... Ale json_encode działa tylko na „za”, a nie do „UE”.
Czy ktoś wie, jak rozwiązać ten problem? Jeśli tak, proszę mi powiedzieć ..
Domyślam się, że problemem są "Wyspy Alandzkie", ponieważ json_encode ma problemy z "Å" jako dziwnym unicode. Spróbuj ustawić swój mysql_connection na UTF-8 –