DBテーブルのデータをjsonにエンコードする必要があるPHPコードがあります。 私はjson_encode()を使用しました。 http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/PHPでjson_encodeが部分的に動作しない
このコードのbehaviousは異なる入力に対して異なるように思える -
は、私はここで指定したテーブルを使用します。
クエリ - $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は「EU」の「AS」でのみ動作しません。
誰もこの問題を解決する方法を知っていますか? もしそうなら、plsに教えてください。
json_encodeには、奇妙なユニコードであるために "Å"に問題があるため、問題は "ÅlandIslands"です。 私は 'mysqli_set_charset($詐欺「UTF8」)を追加 。2分以内に迅速な対応をありがとうUTF-8 –