将数据推送到使用 json_encode 生成的 JSON
Pushing data to a JSON generated with json_encode
在下面几行中,如果我不尝试将某些内容推送到 $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_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()
添加到数组,或 {}
作为 objects.
的语法
接下来,您不推入 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;
在下面几行中,如果我不尝试将某些内容推送到 $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_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()
添加到数组,或 {}
作为 objects.
接下来,您不推入 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;