我有一個PHP代碼,需要將DB表數據編碼爲json。 所以我用json_encode()。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'";
也不會返回任何內容。
相似的「不適用」,「自動對焦」不起作用,其他人工作完美。
我很奇怪這種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」。
有誰知道如何解決這個問題? 如果是這樣,請告訴我..
我想,問題是「ÅlandIslands」,因爲json_encode與「Å」有關的問題是一個奇怪的unicode。 試試你mysql_connection設置爲UTF-8 –