无法从JsonArray获取值

时间:2017-10-10 04:09:00

标签: php json

我遇到问题从PHP编码中获取值到我的android。 logcat显示

  

:W / System.err:org.json.JSONException:

帖子没有价值。

这是我的PHP代码:

<?php

require("config1.php");

$query="SELECT commentName,comment FROM discussion_comment WHERE discussID = :discussID";
        $query_params=array(':discussID'=> $_POST['discussID']);

try {
    $stmt   = $db->prepare($query);
    $result = $stmt->execute($query_params);
}catch (PDOException $ex) {
    $response["success"] = 0;
    $response["message"] = "Database Error!";
    die(json_encode($response));
}

$rows = $stmt->fetchAll();

if ($rows){
    $response["success"]=1;
    $response["message"]="Post Available";
    $response["posts"]= array();

    foreach ($rows as $row){
        $post = array();

        $post["commentName"] = $row["commentName"];
        $post["comment"] = $row["comment"];

        array_push($response["posts"], $post);
        }

        echo json_encode($response);

        }else {
        $response["success"] = 0;
        $response["message"] = "No post Available!";
        die(json_encode($response));

?>

何时删除'WHERE discussID = :discussID"',我可以获取数据,但有些是不必要的。用Where条件写什么其他方法。 我的java:

private static final String COMMENT_NAME="commentName";
    private static final String COMMENT="comment";
    private static final String COMMENT_VIEW_URL="http://fysystem.com/show_comment.php";

@Override
        protected String doInBackground(String... args) {
            try {
                json=jsonParser.getJSONFromUrl(COMMENT_VIEW_URL);
                JSONArray jsonArray=json.getJSONArray("posts");
                for(int i = 0; i<jsonArray.length();i++) {
                    json=jsonArray.getJSONObject(i);
                    commentName=json.getString(COMMENT_NAME);
                    comment=json.getString(COMMENT);
                }

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

<强> PHP

<?php
require("config1.php");

// Default message
$response = array('success'=>0, 'message'=>'Error. Pass required parameters');

// Check discussID exists in POST params
if(isset($_POST['discussID']) && $_POST['discussID']!=""){
    $sql = 'SELECT `commentName`, `comment` FROM `discussion_comment` WHERE `discussID` = :discussID';
    try {
        // Hope $db is defined in config1.php
        $stmt = $db->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute(array(':discussID'=> $_POST['discussID']));

        $response = array("success"=>0, "message"=>"Discussion Not found");
        // If data exists
        if($stmt->rowCount()>0){
            // Fetching rows with a scrollable cursor
            // http://php.net/manual/en/pdostatement.fetch.php
            $posts = array();       
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $posts[] = array('commentName'=>$row['commentName'], 'comment' => $row['comment']);
            }

            // Set the success status 1 and add the posts in return response
            $response = array('success'=>1, 'message'=>'Discussion found', 'posts'=>$posts);
        }
        $stmt = null;
    }
    catch (PDOException $e) {
       // print $e->getMessage();
       $response = array('success'=>0, 'message'=>'DB Error');
    }
}

// Finally return the response
echo json_encode($response);

?>

<强>的Andorid

try {
    json=jsonParser.getJSONFromUrl(COMMENT_VIEW_URL);

    int success = json.getInt('success');
    // Check before access posts data
    if(success==1){
        JSONArray jsonArray=json.getJSONArray("posts");
        for(int i = 0; i<jsonArray.length();i++) {
            json=jsonArray.getJSONObject(i);
            commentName=json.getString(COMMENT_NAME);
            comment=json.getString(COMMENT);
        }
    }else{
        // Handle it here if parameters not exist or db error or no discussion found
    }
}

希望这有帮助!