2012-02-10 67 views
0

我試圖拉取產品頁面模板的評論總數,出於某種原因,即使至少有2個,我仍然會得到一個結果。計算給定產品的評論總數

任何人都可以幫忙嗎?

我寫下了以下幾段代碼。

$reviews_query_raw = "SELECT r.reviews_id, rd.reviews_text as reviews_text, r.reviews_rating, r.date_added, r.customers_name 
        FROM " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd 
        WHERE r.products_id = :productsID 
        AND r.reviews_id = rd.reviews_id 
        AND rd.languages_id = :languagesID " . $review_status . " 
        ORDER BY r.reviews_id desc"; 

$reviews_query_raw = $db->bindVars($reviews_query_raw, ':productsID', $_GET['products_id'], 'integer'); 
$reviews_query_raw = $db->bindVars($reviews_query_raw, ':languagesID', $_SESSION['languages_id'], 'integer'); 
$reviews_split = new splitPageResults($reviews_query_raw, MAX_DISPLAY_NEW_REVIEWS); 
$reviews = $db->Execute($reviews_split->sql_query); 
後來在頁面

然後:

<?php echo $reviews->RecordCount(); ?> 

而且它返回一個。即使我可以在phpMyAdmin中運行相同的查詢並獲得實際結果。

+1

你在哪裏看到1的結果?在查詢中我看不到COUNT(*)'聚合。 – 2012-02-10 16:41:53

+0

我使用ZenCart函數:$ reviews-> RecordCount()來顯示結果。我應該做點別的嗎? – 2012-02-10 16:54:55

+0

我猜「1」是一個真實的結果 - 就像一個資源指針的返回值爲true,轉換爲輸出字符串 - 但在這種情況下,它適用於任何'$ db-> Execute()'回報。它需要我猜想的某種類型的迭代器,或者如果它是一個數組,則需要一個「count()」。 – CD001 2012-02-10 16:55:04

回答

1

您已將MAX_DISPLAY_NEW_REVIEWS設置爲1. splitPageResults class paginates您的原始查詢,因此轉換後的查詢在末尾具有類似'LIMIT 0,1'的內容。爲了獲得評價的總數使用:

<?php echo $reviews_split->number_of_rows;?> 

知道需要多少頁面來顯示使用MAX_DISPLAY_NEW_REVIEWS的當前設置的所有評論使用:

<?php echo $reviews_split->number_of_pages;?> 

可以在配置 - 在管理區改變MAX_DISPLAY_NEW_REVIEWS >最大/最小值