2012-02-10 30 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 >最大/最小值