У меня есть PHP-код, который должен кодировать данные таблицы DB в json. Поэтому я использовал json_encode().
Я использую приведенные здесь таблицы - http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/
Поведение этого кода, по-видимому, отличается для разных входов.
Запрос - $query = "SELECT * FROM countries ";
не возвращает никаких значений json.
Запрос - $query = "SELECT * FROM countries where continent_code='AS'";
корректно возвращает значения json.
тогда как $query = "SELECT * FROM countries where continent_code='EU'";
также ничего не возвращает.
Сходство "NA", "AF" не срабатывало, а другие работали идеально.
Я странно это поведение PHP json_encode.
Это мой код.
<?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);
?>
До предыдущей строки json_encode данные переносятся. Поэтому я думаю, что проблема с json-кодированием.
Я пытался узнать об этом, используя print_r($orders);
.
Я получил от него следующий результат.
Если я попытаюсь использовать "ЕС", я получаю этот массив.
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 )...
Если я пытаюсь использовать "AS", я получаю этот массив.
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)...
Оба массива выглядят одинаково правильно... Но Json_encode работает только на "AS", а не на "EU".
Кто-нибудь знает, как решить эту проблему? Если да, скажите мне, пожалуйста.