Как закодировать несколько результатов MySQLi в правильный формат json?


if ($result->num_rows > 0) {

     // output data of each row
     while($row = $result->fetch_assoc()) {

$post_data = array(
    'item' => array(
    'ID' => $row["id"],
    'Name' => $row["name"],
    'Category' => $row["category"],
    'Saldo' => $row["saldo"],
    'Editor' => $row["editor"],
    'Edited' => $row["reg_date"]
  )
);
echo json_encode($post_data);

, который выводит:

{"item":{"ID":"123456","Name":"Chair","Category":"Trashes","Saldo":"40","Editor":"Seppo","Edited":"2015-09-15 13:54:36"}}{"item":{"ID":"123888","Nimi":"Cheese","Kategoria":"Food","Saldo":"3","Editor":"Jorma","Edited:"2015-09-15 14:14:17"}}

Когда это должно выглядеть примерно так:

[{"item":{"ID":"123456","Name":"Chair","Category":"Trashes","Saldo":"40","Editor":"Seppo","Edited":"2015-09-15 13:54:36"}},{"item":{"ID":"123888","Nimi":"Cheese","Kategoria":"Food","Saldo":"3","Editor":"Jorma","Edited:"2015-09-15 14:14:17"}}]

, который не в правильном формате json. Как мне отредактировать этот код, чтобы все мои элементы mysql прошли.

У меня из головы даже долгое время не выходили результаты...

Author: sukkis, 2015-09-15

1 answers

Вы сбрасываете значение $post_data на каждой итерации. Вы должны просто добавить к нему.

if ($result->num_rows > 0) 
{
    while($row = $result->fetch_assoc()) 
    {
        $post_data[] = array(
            'item' => array(
                'ID' => $row["id"],
                'Name' => $row["name"],
                'Category' => $row["category"],
                'Saldo' => $row["saldo"],
                'Editor' => $row["editor"],
                'Edited' => $row["reg_date"]
            )
        );
    }

    echo json_encode($post_data);
}
 1
Author: Chris Magnussen, 2015-09-15 17:37:50