2014-10-08 17 views
0

我剛從5.3.x升級到5.5.17,下面的代碼停止工作(我收到一個空白的響應)。PHP 5.5升級打破這個簡單的數組/ JSON編碼器

$gestr = mysql_query("SELECT name,age,id FROM users"); 
$star = array(); 
while($starid = mysql_fetch_array($gestr)){ 
    $star[] = array('name'=>$starid['name'],'age'=>$starid['age'],'id'=>$starid['id']); 
} 
$final=array('users'=>$star); 
echo json_encode($final); 

請注意,我簡單的SQL語句,但我知道它的工作原理,一路過關斬將while循環,因爲我可以附和了$星[1] [名],它打印的用戶名。

+2

什麼是確切的錯誤?你爲什麼認爲升級是原因? – 2014-10-08 15:51:36

+0

代碼工作正常,直到昨天...我剛剛重新升級後,我得到一個黑色的頁面。我可以附加echo語句來回顯json_encode($ final)。$ star [1] [name];並輸出第一個用戶的名字。所以這個錯誤在$ final數組被創建的地方。 – 0pt1m1z3 2014-10-08 15:53:51

+0

如果您將其封裝到try-catch並打印出異常,是否有異常? – 2014-10-08 15:54:52

回答

3

問題在於json_encode無法解析非UTF8編碼的名稱。感謝@ChrisForrence建議使用json_last_error();

該錯誤通過添加utf8_encode()修復;

$star[] = array('name'=>utf8_encode($starid['name']),'age'=>$starid['age'],'id'=>$starid['id']); 
+0

也看看那些:['mysql_client_encoding()'](http://en.php.net/manual/de/function.mysql-client-encoding.php),[PHP:Character sets](http: //php.net/manual/en/mysqlinfo.concepts.charset.php),[PHP和MySQL中的UTF-8](http://blog.flowl.info/2014/mastering-unicodeutf-8-encoding-php /)。 – DanFromGermany 2014-10-08 16:24:59