在json编码

时间:2016-05-10 13:13:32

标签: php arrays json

我想在一个json编码中添加我的数据库中的所有数组并稍后对其进行解码..但是我遇到了一个我不知道如何修复的问题。

我正在尝试将sql查询中的所有数组添加到一个数组中,然后使用其中的所有数组对该数组进行编码。

我目前的代码:

        $dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
        $result = array();
        foreach($dbh->query('SELECT * from bier') as $row) {
           $result[] += $row;
        }
        print json_encode($result);

更新的代码:

function getData()
    {
    try {

        $dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
        $result = array();
        foreach($dbh->query('SELECT * from bier') as $row) {
            $result[] = $row;
        }
        $json = json_encode($result, JSON_PRETTY_PRINT);
        var_dump($json);

    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
}

目前返回:布尔值为

1 个答案:

答案 0 :(得分:0)

在PHP中,+=复合运算符用于&#34;添加&amp;分配&#34 ;;但是,这不会像您期望将项目插入数组那样有效。

如果您从@Rajdeep指出的那行中删除+,您的代码应该可以正常工作。

以下是您的代码,为了清晰起见,更新了一些更改:

try
{
    $data = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
    $data->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $list = [];

    foreach($data->query('SELECT * from bier') as $item)
    { $list[] = $item; }

    $json = json_encode($list, JSON_PRETTY_PRINT);

    echo $json;
}
catch (PDOException $fail)
{
    echo $fail->getMessage();
    exit;
}

你可能注意到了;变量名称(即数组)后的[] =字符序列将新项目插入到已分配的数组中。

try --> catch块应指出是否存在问题。

以下是有关如何检查错误的更多信息:http://php.net/manual/en/pdo.connections.php