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

Php 将数据推送到使用JSON_encode生成的JSON,php,mysql,json,object,push,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); $dataJ

在以下几行中,如果我不尝试将某些内容推送到$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生成的对象数组中添加最后一个对象

我可能错过了一些简单的东西,因为我在网上找到的每一个提示都没能解决我的问题


谢谢

json\u 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);

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

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

接下来,不推送JSON,而是推送数组,然后将数组编码为JSON

如果希望列标题位于数组的开头,则应使用array\u unshift,而不是array\u push

因此,它应该是:

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

$dataJson.push不是PHP语法。在添加循环后进行测试时,我得出了错误的结论。真没用。谢谢你,我经常混合语法。我做得很好!非常感谢。我使用了另一种解决方案,但你的回答也帮助我澄清了一些误解。