2017-02-01 31 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語法混合到您的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; 
+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

謝謝。我已經使用了其他解決方案,但您的回答也幫助我清除了一些誤解。 –

相關問題