如何在FETCH_ASSOC中使用fetchColumn()?我希望每个月的输出节目如(7月,6月,5月,4月,3月),但我的代码下面的输出显示替代月份,如(7月,5月,3月),我可以知道如何解决它吗?
$poslaju = "%poslaju%";
$sql = "SELECT count(*), payment_date, sum(postage) FROM sale WHERE seller_id=? && courier LIKE ? GROUP BY YEAR(payment_date), MONTH(payment_date) ORDER BY payment_date DESC Limit 36";
$q = $conn->prepare($sql);
$result = $q->execute(array($user_id, $poslaju));
if(!$result){
//show error messages
}
while($r = $q->fetch(PDO::FETCH_ASSOC)){
$payment_date_db = $r['payment_date'];
$payment_date_db2 = date("d-F-Y", strtotime($payment_date_db));
$postage_db = $r['sum(postage)'];
$Count = $q->fetchColumn();
echo $payment_date_db2 . " - " . $money_currency . $postage_db . " - " . $Count . " parcels <br />";
}
答案 0 :(得分:1)
这有帮助吗? (注意:我已删除 WHERE 子句。)
主要是你的SQL语句需要一些工作。只选择 payment_date 而非年(payment_date),MONTH(payment_date)意味着您只需从分组日期中获取最新日期。
如果您发布了您尝试创建的输出,则可能有助于获得更多答案。
我不是100%肯定没有测试它,但我认为你的:
$Count = $q->fetchColumn();
从下一个结果中选择一列,可能不会按预期运行。根据手册:
PDOStatement :: fetchColumn - 返回下一行的单个列 结果集
如果您使用 AS 关键字(正如我在SQL Fiddle示例中演示的那样),您可以使用:
echo $r['count_items'];