Java 如何使用php将多行从mysql编码为json

Java 如何使用php将多行从mysql编码为json,java,php,android,mysql,json,Java,Php,Android,Mysql,Json,我试图将从数据库中获取的所有数据行编码为JSON,然后在客户端处理,但似乎无法使其正常工作。我的代码如下 function getTopic($conn){ $response = array("error" => 0); $qry = "SELECT original_title, content, time FROM topic WHERE vis = 1"; $result = $conn->prepare($qry); $result->

我试图将从数据库中获取的所有数据行编码为JSON,然后在客户端处理,但似乎无法使其正常工作。我的代码如下

function getTopic($conn){
    $response = array("error" => 0);
    $qry = "SELECT original_title, content, time FROM topic WHERE vis = 1";
    $result = $conn->prepare($qry);
    $result->execute();
    if($result->rowCount() > 0){
        $output = $result->fetchall();
        $response['text'] = $output['original_title'];
        $response['test'] = $output['content'];
        return json_encode($response);
        //return $output;
    }
然后我尝试打印var_dump($response),但得到空值。。虽然如果我使用var_dump($output),我会得到一个数组中的所有行..现在这里的问题是访问数组..我想


注意:我正在使用PDO

$输出是结果数组。使用循环,或者如果只需要一行,则执行以下操作:

function getTopic($conn){
$response = array("error" => 0);
$qry = "SELECT original_title, content, time FROM topic WHERE vis = 1";
$result = $conn->prepare($qry);
$result->execute();
if($result->rowCount() > 0){
    $output = $result->fetchall();
    $response['text'] = $output[0]['original_title'];
    $response['test'] = $output[0]['content'];
    return json_encode($response);
    //return $output;
}

问题是$output是一个需要遍历的数组。比如:

function getTopic($conn){
    $response = array("error" => 0);
    $qry = "SELECT original_title, content, time FROM topic WHERE vis = 1";
    $result = $conn->prepare($qry);
    $result->execute();
    if($result->rowCount() > 0){
        $output = $result->fetchall();
        foreach ($output as $o){
           $response['text'] = $o['original_title'];
           $response['test'] = $o['content'];
        }
        return json_encode($response);
    }
}
这是最后一个响应,但如果您想要全部响应,请执行以下操作:

function getTopic($conn){
    $response = array('error'=>0);
    $qry = "SELECT original_title, content, time FROM topic WHERE vis = 1";
    $result = $conn->prepare($qry);
    $result->execute();
    if($result->rowCount() > 0){
        $output = $result->fetchall();
        foreach ($output as $o){
           $response[] = array('text'=>$o['original_title'],'test'=>$o['content']);
        }
        return json_encode($response);
    }
}

如果您只需要一行,请在MySQL语句中添加一个限制。

OP没有提到他使用的是什么-mySQLi或PDO。感谢您的响应…但它仍然给出了相同的错误。例如,注意:未定义的索引:C:\wamp\www\api\include\functions.php中的原始标题,第58行注意:未定义的索引:原始标题C:\wamp\www\api\include\functions.php,位于第59行,其中“$response['text']=$output['original_title'”$响应['test']=$output['content'];'上面的$response将只包含最后一个$output记录。可能需要使用类似$response[]=array('text'=>$output['original_title'],'test'=>$output['content']);对不起,我在代码中犯了一个错误,请立即尝试。这将只获取上面提到的用户的最后一行。如果需要,可以创建一个响应数组。如果只需要第一行,则可以创建一个数组。true!如果只有一行。