2016-09-07 129 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也(将更新问题的结果) –