Как преобразовать результат PDO fetchAll в JSON? - PullRequest
0 голосов
/ 20 сентября 2018

Я получаю данные из моей базы данных MSSQL Server 2016, используя PDO в PHP.Запрос работает хорошо:

try  {
    $db = new PDO( 'dblib:host='.$server.' ; dbname='.$database, $user, $pw);
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch(PDOException $e) {
    die( print_r( $e->getMessage() ) );
}

$smt = $db->query("SELECT ABP.cArtNr AS 'Artikelnummer',
       MAX(SUBSTRING(ABP.cName,8,50)) AS 'Beschreibung',
       SUM(ABP.nQuantityPurchased) AS 'Anzahl',
       SUM(ABP.nQuantityPurchased) * MAX(AA.fPrice) AS 'Brutto-Umsatz'
FROM pf_amazon_bestellung
INNER JOIN pf_amazon_bestellungpos ABP ON pf_amazon_bestellung.kAmazonBestellung = ABP.kAmazonBestellung
INNER JOIN pf_amazon_angebot AA ON ABP.cArtNr = AA.cSellerSKU
WHERE dPurchaseDate >= DateAdd(DAY, DateDiff(DAY, 0, getDate()), 0)
  AND pf_amazon_bestellung.cOrderStatus <> 'Canceled'
GROUP BY ABP.cArtNr");

while(($o = $smt->fetch(PDO::FETCH_ASSOC)) !== false) {
    print_r($o);
}
$db = NULL;

Вы можете увидеть результат здесь: http://stats.valonic.com/server_processing4.php

Этот результат не пригоден для меня, так как мне нужен JSON, который должен иметь структуру, показанную здесь: http://stats.valonic.com/server_processing.php Здесь я использовал следующий код:

$a = array();
while ($row = mssql_fetch_assoc($result)) {
    $a['data'][] = $row;
}
echo json_encode($a);

Но вместо этого я хотел бы использовать PDO.

Вместо этого я попытался использовать fetchAll:

$result = $smt->fetchAll();
print_r($result);

Результат этого можно увидеть здесь: http://stats.valonic.com/server_processing3.php Хорошо, работает, но не знаю, как преобразовать результат, чтобы достичь структуры, как показано в http://stats.valonic.com/server_processing.php.

Можете ли выпомочь мне здесь?Спасибо за ваш отзыв!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...