1

我正在尝试将从数据库获取的所有数据行编码为 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

4

2 回答 2

1

$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();
    $response['text'] = $output[0]['original_title'];
    $response['test'] = $output[0]['content'];
    return json_encode($response);
    //return $output;
}
于 2013-09-14T01:32:39.137 回答
1

问题是 $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 语句添加限制。

于 2013-09-14T01:37:25.617 回答