首页 > 解决方案 > 如何在一个 JSON 中获取两个查询以显示在 Chart.js 折线图上?

问题描述

在我的项目中显示有关图表的统计信息。

其中一个数据是本周和上周网站上的点击次数。两者目前都在自己的折线图中。那里也显示了一切,没有任何问题。但是现在我想把本周的数据和上周的数据放在一个折线图中,以便快速比较从本周到上周的网站访问量。

因此,我尝试将两个查询的输出转换为一个 JSON,但我总是收到此错误 ( json_encode() expects parameter 2 to be int, array given)。

我认为这应该以不同的方式解决,但我还没有找到任何其他的想法或方法。

代码:

    header("Content-Type: application/json");

    include "../../../includes/db.php";

    $stmt = $connection->prepare("SELECT website_stats_homepage AS current_week FROM website_stats WHERE yearweek(DATE(website_stats_date), 1) = yearweek(curdate(), 1) ORDER BY website_stats_date");
    //$stmt = $connection->prepare("SELECT website_stats_homepage FROM website_stats WHERE website_stats_date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY AND website_stats_date < curdate() - INTERVAL DAYOFWEEK(curdate())-2 DAY");
    $stmt->execute();
    $result = $stmt->get_result();

    $stmt1 = $connection->prepare("SELECT website_stats_homepage AS last_week FROM website_stats WHERE website_stats_date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY AND website_stats_date < curdate() - INTERVAL DAYOFWEEK(curdate())-2 DAY");
    $stmt1->execute();
    $result1 = $stmt1->get_result();

    $data = array();
    foreach($result as $row) {
        $data[] = $row;
    }

    $data1 = array();
    foreach($result1 as $row1) {
        $data1[] = $row1;
    }

    $stmt->close();
    $stmt1->close();

    echo json_encode($data, $data1);

标签: phpmysqljson

解决方案


将数据打包到关联数组中

echo json_encode(['current' => $data, 'last' => $data1]);

作为替代方案,您可以尝试使用子查询或连接来合并已经通过查询的数据。


推荐阅读