Php 以json编码从数据库添加数组

Php 以json编码从数据库添加数组,php,arrays,json,Php,Arrays,Json,我想将数据库中的所有数组添加到一个json编码中,稍后再对其进行解码。。但我遇到了一件我不知道如何修复的事情 我试图将sql查询中的所有数组添加到一个数组中,然后用其中的所有数组对该数组进行编码 我当前的代码: $dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass); $result = array

我想将数据库中的所有数组添加到一个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();
    }
}
函数getData() { 试一试{ $dbh=new-PDO('mysql:host='.$this->server.';dbname='.$this->database.',$this->user,$this->pass); $result=array(); foreach($dbh->query('SELECT*from bier')作为$row){ $result[]=$row; } $json=json_encode($result,json_PRETTY_PRINT); var_dump($json); }捕获(PDO$e){ 打印“错误!:”$e->getMessage()。“
”; 模具(); } }
当前返回:布尔False

在PHP中,
+=
复合运算符用于“添加和分配”;但是,这并不像您期望的那样将项插入数组

如果像@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
块应指示是否存在问题


以下是有关如何检查错误的更多信息:

从此语句中删除
+
$result[]+=$row@RajdeepPaul我试过了,但是如果我试着在错误报告中打印它,它不会显示任何内容。添加这些行
错误报告(E_ALL);ini设置(“显示错误”,1),查看是否产生任何错误。@RajdeepPaul没有错误shown@RyanVincent当我刚刚把$result甩了的时候,它起作用了:)谢谢!非常感谢!但是,如果我尝试回显或打印它,似乎什么也不会显示:/请确保数据库连接设置正确,并确保数据库表
bier
中有您的
select
查询所建议的数据。我已经测试过了it@BananaCoder::我更新了答案并添加了一个链接,该链接解释了PDO连接,还显示了如何检测错误,因为这可能是导致结果为空的原因。@BananaCoder::我添加了强制抛出错误(如果有)的代码,因此,try/catch应该处理抛出的错误,并显示出错的地方。别忘了测试代码,这里最新的代码更新很可能会起作用——或者至少会告诉你哪里出了问题。