JSON_Encode返回NULL(数组)

时间:2016-09-07 13:16:44

标签: php mysql json

我正在尝试解析Android Studio中的JSONresponse,并且意识到JSON_Encode返回NULL。有什么想法会导致这种情况吗?我使用PHP 5.2.X

这是我的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”:NULL, “LAT”:NULL, “LNG”:NULL, “片断”:空}, “1”: { “成功”:假的, “marker_id”:空, “LAT”:空, “LNG”:空, “片段”:空}, “2”:{ “成功”:假的, “marker_id”:空” LAT “:空,” LNG “:空,” 片段 “:空},” 3 “:{” 成功 “:假的,” marker_id “:空,” LAT “:空,” LNG “:空,” 片断”日期null}, “4”:{ “成功”:假 “marker_id”:NULL, “LAT”:NULL, “LNG”:NULL, “片断”:NULL} “5”:{ “成功”:假“marker_id”:空, “LAT”:空, “LNG”:空, “片段”:空}, “6”:{ “成功”:假的, “marker_id”:空, “LAT”:空” LNG “:NULL,” 片断“:空}}

它为lat,lng,snippet甚至marker_id都返回null,即使我的数据库中有值(使用mysql)。

非常感谢任何帮助!

更新:插入$ arr,但结果仍然相同 更新:使用

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

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

给出了这个错误(仍返回null):

<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 “:空,” 片断”日期null}, “4”:{ “成功”:假 “marker_id”:NULL, “LAT”:NULL, “LNG”:NULL, “片断”:NULL} “5”:{ “成功”:假“marker_id”:空, “LAT”:空, “LNG”:空, “片段”:空}, “6”:{ “成功”:假的, “marker_id”:空, “LAT”:空” LNG “:NULL,” 片断“:空}}

1 个答案:

答案 0 :(得分:1)

您必须在列出的变量中使用mysqli_stmt_bind_result(...);来绑定值。您可以将compact()用于变量名称

的make数组
mysqli_stmt_bind_result($marker_id,$lat,$lng,$snippet);

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