将数据推送到使用json_encode生成的JSON

时间:2017-02-01 22:09:31

标签: php mysql json object push

如果我不尝试将某些东西推送到$ dataJson,那么一切都有效。

    $reponse = $bdd->query("SELECT Comp_Name,Comp_Email 
        FROM Company");

    while ($donnees = $reponse->fetchAll(PDO::FETCH_ASSOC)) {
        $dataJson = json_encode($donnees);
        $dataJson.push({Col1:'Company Name',Col2:'Email'});
        echo $dataJson;
    };

我想将最后一个对象添加到json_encode生成的对象数组中。

我可能会遗漏一些简单的东西,因为我在互联网上找到的每个提示都无法解决我的问题。

由于

2 个答案:

答案 0 :(得分:1)

首先,您不需要在循环中调用fetchAll()。它一次获取所有结果。

接下来,您似乎将Javascript语法混合到PHP中。 PHP不使用.shift()添加到数组,或{}作为对象的语法。

接下来,你没有按下JSON,你推入数组,然后你将数组编码为JSON。

如果您希望列标题位于数组的开头,则应使用array_unshift(),而不是array_push()

所以它应该是:

$donnees = $response->fetchAll(PDO::FETCH_ASSOC);
array_unshift($donnees, array('Col1' => 'Company Name', 'Col2' => 'Email'));
$dataJson = json_encode($donnees);
echo $dataJson;

答案 1 :(得分:0)

json_encode将数组转换为字符串。你不能把任何东西都推到字符串上,而你试图连接,你不会得到无效的json。这样做。

$reponse = $bdd->query("SELECT Comp_Name,Comp_Email 
        FROM Company");

$data=array();
while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC)) {
    $data[]=$donnees;
};
echo json_encode($data);