2017-02-01 2 views
0

$ dataJsonに何かをプッシュしようとしないと、次の行がすべて動作します。json_encodeで生成されたJSONにデータをプッシュ

$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によって生成されたオブジェクトの配列に最後のオブジェクトを追加したいとします。

私がインターネット上で見つけたすべてのヒントが私の問題を解決できなかったので、私は何かが簡単に見つからないことがあります。

+3

'$ dataJson.push()' PHP構文ではありません。 – Barmar

答えて

1

最初に、fetchAll()にループする必要はありません。すべての結果を一度に取得します。

次に、JavaScriptにJavascriptの構文を混ぜているようです。 PHPは.shift()を使用して配列に追加するか、オブジェクトの構文として{}を使用しません。

次に、JSONを押さずに配列にプッシュし、配列をJSONとしてエンコードします。

列の見出しを配列の先頭にしたい場合は、ではなく、array_push()を使用する必要があります。

だから、次のようになります。

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

ループを追加した後に何かをテストしている間、私は間違った結論に飛びついた。それは本当に役に立たない。 私は頻繁に構文を混ぜる、ありがとう。 私は完璧に動作します! –

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); 
+0

ありがとうございます。私は他の解決法を使ってきましたが、あなたの答えは私にも誤解を明らかにするのに役立ちました。 –

関連する問題