2016-09-07 94 views
-1

我想解析Android Studio中的JSONresponse,並剛剛意識到JSON_Encode返回NULL。任何想法可能導致這種情況?我使用PHP 5.2.XJSON_Encode返回NULL(數組)

這裏是我的PHP:

<?php 
    header('Content-Type: application/json'); 
    $con = mysqli_connect("myhost", "myuser", "mypass", "a5911579_android"); 

    $statement = mysqli_prepare($con, "SELECT * FROM markers ORDER BY marker_id"); 
    mysqli_stmt_execute($statement); 

    $arrRows = array(); 
    $arryItem = array(); 
    $arrRows["success"] = false; 
    $arryItem["success"] = false; 

    while($arr = mysqli_stmt_fetch($statement)) { 
     $arryItem["marker_id"] = $arr["marker_id"]; 
     $arryItem["lat"] = $arr["lat"]; 
     $arryItem["lng"] = $arr["lng"]; 
     $arryItem["snippet"] = $arr["snippet"]; 
     $arrRows[] = $arryItem; 
    } 

    echo json_encode($arrRows); 
?> 

這是我的迴應:

{ 「成功」:假的, 「0」:{ 「成功」:假 「marker_id」:空, 「LAT」:空, 「LNG」:空, 「片段」:空}, 「1」:{ 「成功」:假的, 「marker_id」:空, 「LAT」:空, 「LNG」:空, 「片段」:空}, 「2」:{ 「成功」:假的, 「marker_id」:空, 「LAT」:空, 「LNG」:空, 「片段」:空}」 3 「:{」 成功 「:假」 marker_id 「:NULL,」 LAT 「:NULL,」 LNG 「:NULL,」 片斷 「:NULL}」,4 「:{」 成功 「:假」 marker_id「:空, 「LAT」:NULL, 「LNG」:NULL, 「片斷」:NULL} 「5」:{ 「成功」:假的,「標誌物_id 「:空,」 LAT 「:空,」 LNG 「:空,」 片段 「:空},」 6 「:{」 成功 「:假的,」 marker_id 「:空,」 LAT 「:空,」 LNG」 :null,「snippet」:null}}

對於lat,lng,snippet甚至marker_id都會返回null,即使我的數據庫中有這些值(使用mysql)。

任何幫助非常感謝!

更新:插入$改編,但仍然得到同樣的結果 更新:使用

mysqli_stmt_bind_result($marker_id,$lat,$lng,$snippet); 

while(mysqli_stmt_fetch($statement)) { 
$arrRows[] = compact('marker_id','lat','lng','snippet'); 
} 

給出了這樣的錯誤(還空返回):

<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><font face='Arial' size='1' color='#000000'><b>PHP Error Message</b></font></td></tr></table><br /> 
<b>Warning</b>: mysqli_stmt_bind_result() expects parameter 1 to be mysqli_stmt, null given in <b>/home/a5911579/public_html/GetAuction2.php</b> on line <b>16</b><br /> 
<br><table border='1' cellpadding='2' bgcolor='#FFFFDF' bordercolor='#E8B900' align='center'><tr><td><div align='center'><a href='http://www.000webhost.com/'>  <font face='Arial' size='1' color='#000000'>Free Web Hosting</font></a></div></td></tr></table> 

{ 「成功」:假的, 「0」:{ 「成功」:假 「marker_id」:NULL, 「LAT」:NULL, 「LNG」:NULL, 「片斷」:空}, 「1」:{ 「成功」:假「marker_id 「:空,」 LAT 「:空,」 LNG 「:空,」 片段 「:空},」 2 「:{」 成功 「:假的,」 marker_id 「:空,」 LAT 「:空,」 LNG「:空, 「片段」:空}, 「3」:{「成功「:假的,」 marker_id 「:空,」 LAT 「:空,」 LNG 「:空,」 片段 「:空},」 4 「:{」 成功 「:假的,」 marker_id 「:空,」 LAT「:空, 「LNG」:空, 「片段」:空}, 「5」:{ 「成功」:假的, 「marker_id」:空, 「LAT」:空, 「LNG」:空, 「片段」:空} , 「6」:{ 「成功」:假的, 「marker_id」:空, 「LAT」:空, 「LNG」:空, 「片段」:空}}

+1

「$ arr」在哪裏定義?也許你打算做'while($ arr = mysqli_stmt_fetch($ statement)){'? – apokryfos

+0

@apokryfos你是對的,仍然得到相同的結果,雖然 –

+0

(1)你需要在開發時增加錯誤報告級別來解決這些問題(2)你可以做一個'print_r($ arr)'來製作肯定它確實有你期望的數據? – apokryfos

回答

1

你必須使用mysqli_stmt_bind_result(...);用於綁定在列出的變量中的值。你可以使用compact()來製作變量名稱的數組

mysqli_stmt_bind_result($marker_id,$lat,$lng,$snippet); 

while(mysqli_stmt_fetch($statement)) { 
    $arrRows[] = compact('marker_id','lat','lng','snippet'); 
} 
+1

'$ arr ='可能不再需要在while語句中 –

+0

@ChrisForrence,你是對的:) –

+0

這給了我一大堆其他錯誤(記得我使用PHP 5.2)。但最終返回null也(將更新問題的結果) –