我是绝对的 DB/MySQL 初学者,所以我不确定我是否在问正确的问题,但我想试一试。
我为播客设置了一个 Wordpress 页面,该页面在其 MySQL 数据库中按日期计算下载量。为了跟踪下载,我设法构建了一个如下所示的 VIEW:
+-----------+-------------+-------+--------------+-------------+--------------+
| EpisodeID | ReleaseDate | Title | Downloads24h | Downloads7d | Downloads14d |
+-----------+-------------+-------+--------------+-------------+--------------+
| 88 | 2018/01/01 | E01 | 83 | 146 | 207 |
| 124 | 2018/01/15 | E02 | 50 | 92 | 156 |
| 172 | 2018/02/15 | E03 | 71 | 100 | 186 |
| 303 | 2020/03/15 | E04 | 92 | 183 | 328 |
+-----------+-------------+-------+--------------+-------------+--------------+
因为我还想有一些很酷的图表,所以我在我的服务器上设置了 ChartJS 并尝试使用我的 VIEW 中的数据,但不幸的是它要求列中的数据。这意味着当我从 php 端获取数据时,我只能选择比如说 Downloads24h,它在折线图中以 [83,50,71,92] 结尾,这显然没有意义。
所以我需要做的是以某种方式将桌子翻转成这样的东西:
+--------------+-----+-----+-----+-----+
| Title | E01 | E02 | E03 | E04 |
+--------------+-----+-----+-----+-----+
| Downloads24h | 83 | 50 | 71 | 92 |
| Downloads7d | 146 | 92 | 100 | 183 |
| Downloads14d | 207 | 156 | 186 | 328 |
+--------------+-----+-----+-----+-----+
正如你所看到的,我什至不依赖每集的 ID 和发布日期,因为我只需要用折线图来可视化这些数字。我正在考虑另一个需要动态的视图,因为还有更多剧集。在实际表中,到目前为止已经超过 25 集,但为了简单起见,我将其淡化了。
我希望有一个超级简单的解决方案,我只是不知道,甚至可能在 php 方面。我目前正在做的事情如下:
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$Title= '';
$Downloads24H = '';
$Downloads7d = '';
$Downloads14d = '';
$sql = "SELECT * FROM `DSI_CAST_STATS_EPISODELIST`";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($result)){
$Title= $Title. '"'. $row['Title'].'",';
$Downloads24H = $Downloads24H . '"'. $row['Downloads24H'].'",';
$Downloads7d = $Downloads7d . '"'. $row['Downloads7d'].'",';
$Downloads14d = $Downloads14d . '"'. $row['Downloads14d'].'",';
}
$Title= trim($Title,",");
$Downloads24H = trim($Downloads24H,",");
$Downloads7d = trim($Downloads7d,",");
$Downloads14d = trim($Downloads14d,",");
?>
它有效,但正如我之前所说,我选择了错误的数据集。也许你们中的任何一个魔术师都知道如何轻松解决整个问题。我将不胜感激任何提示、技巧或解决方案!提前致谢!