如何在FETCH_ASSOC中使用fetchColumn()?

时间:2014-08-29 04:02:17

标签: php pdo

如何在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 />";

}   

1 个答案:

答案 0 :(得分:1)

这有帮助吗? (注意:我已删除 WHERE 子句。)

SQL Fiddle <-- click me

主要是你的SQL语句需要一些工作。只选择 payment_date 而非年(payment_date),MONTH(payment_date)意味着您只需从分组日期中获取最新日期。

如果您发布了您尝试创建的输出,则可能有助于获得更多答案。

我不是100%肯定没有测试它,但我认为你的:

$Count = $q->fetchColumn();

下一个结果中选择一列,可能不会按预期运行。根据手册:

  

PDOStatement :: fetchColumn - 返回下一行的单个列   结果集

如果您使用 AS 关键字(正如我在SQL Fiddle示例中演示的那样),您可以使用:

echo $r['count_items'];