DB テーブルのデータを json にエンコードする必要がある PHP コードがあります。そこで、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);
。
私はそれから次の出力を得ました。
「EU」を試してみると、この配列が得られます。
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」では機能しません。
誰もこの問題を解決する方法を知っていますか? もしそうなら、教えてください..