【问题标题】:Counting the total number of reviews for a given product计算给定产品的评论总数
【发布时间】:2012-02-10 16:40:08
【问题描述】:

我正在尝试提取产品页面模板的评论总数,但出于某种原因,即使至少有 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 的结果?我在您的查询中没有看到 COUNT(*) 聚合。
  • 我正在使用 ZenCart 函数:$reviews->RecordCount() 来显示结果。我应该做点别的吗?
  • 我猜“1”是一个真实的结果 - 就像资源指针上的 true 返回值,在输出时转换为字符串 - 但是,在这种情况下,它适用于 @987654324 @返回。我猜它需要某种迭代器——如果它是一个数组,它需要一个 count()
  • @CD001:但我不确定在使用 ZenCart 的“RecordCount”程序后是否应该得到该结果,因为它与其他页面上使用的相同。

标签: php mysql zen-cart


【解决方案1】:

您已将 MAX_DISPLAY_NEW_REVIEWS 设置为 1。 splitPageResults 类对您的原始查询进行分页,因此转换后的查询末尾有类似“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2016-11-29
    • 2012-06-30
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多