2017-02-01 4 views
0

В следующих строках все работает, если я не пытаюсь подтолкнуть что-то к $ dataJson.Нажатие данных на JSON, сгенерированный с помощью json_encode

$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

Спасибо. Я использовал другое решение, но ваш ответ помог мне понять и некоторые недоразумения. –

 Смежные вопросы

  • Нет связанных вопросов^_^