如何将PDO fetchAll结果转换为JSON?

时间:2018-09-20 09:34:33

标签: php json sql-server pdo

我正在使用PHP中的PDO从我的MSSQL Server 2016数据库中获取数据。 查询效果很好:

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,该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中所示的结构。

您能帮我吗? 谢谢您的反馈!

0 个答案:

没有答案