2014-08-29 4 views
0

Как использовать fetchColumn() в FETCH_ASSOC? Я хочу, чтобы выходные данные показывались каждый месяц, например (июль, июнь, май, апрель, март), но мои коды, приведенные ниже, показывают альтернативный месяц, например (июль, май, март). Могу ли я узнать, как его исправить?Как использовать fetchColumn() в FETCH_ASSOC?

$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

Помогло ли это? (NB: Я удалил статью о 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']; 
+0

pefect! Это то, что я ищу. count (*) AS 'count_items'. Он работает как шарм, спасибо, очень. – zac1987