我的查询是:
$sql="SELECT COUNT(`Variant`) AS tsold, MONTHNAME(`sold_date`) AS mname FROM `vehicle_sold` GROUP BY MONTH(`sold_date`) ";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)) {
echo $row["mname"],"---", $row["tsold"],"<br />";
}
给出了以下结果:
January---1
February---2
March---7
April---11
May---6
July---1
6月没有销售,所以我想要的是返回“June --- 0”的查询。如果它还显示截至12月的下个月,那没关系。我想要以下输出:
January---1
February---2
March---7
April---11
May---6
June---0
July---1
Aug---0
Sept---0
Oct---0
Nov---0
Dec---0
答案 0 :(得分:3)
使用月份名称数组 -
$months = array('January', 'February', ..., 'December');
使用从数据库返回的数据生成并使用数组 -
while($row = mysqli_fetch_array($result)) {
$data[$row["mname"]] = $row["tsold"];
}
并相应打印 -
foreach($months as $value) {
echo $value.' - '. (array_key_exists($value, $data) ? $data[$value] : 0) . '<br/>';
}
答案 1 :(得分:1)
如果您没有出售任何东西,我假设您实际上没有数据库中的数据。因此有点难以生成没有信息的月份。
您想要一个包含所有月份的数组,与销售额相对应。 我建议你做这样的事情:
准备一个数组,其中包含所有值为0的月份(默认情况下你可以使这个数组列表'更好',但现在作为示例)。
$data['March'] = 0;
$data['April'] = 0;
现在你可以像你一样进行迭代
while($row = mysqli_fetch_array($result)) {
$data[$row["mname"]] = $row["tsold"];
}
如果数据库未填充该值,则该值仍为0.否则将被数据库值覆盖。