PHP & MySQL - 如何按天计算访问量

PHP & MySQL - How to count visits by day

我有一个名为 #__products_visits 的 table 记录访问。它的结构是:

id
product_id
product_name
date

计数器脚本在访问时插入一条记录。因此,每一行代表对数据库的一次访问。现在,我想按天计算访问次数并按天获取访问次数。这是一个 Joomla!组件,所以查询最好在 Joomla! class.

限制位的WHERE条件切换器:

$date_range = $_REQUEST['date'];

switch($date_range) {
    case 1:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)';
        break;
    case 2:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)';
        break;
    case 3:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)';
        break;
    case 4:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 365 DAY)';
        break;
    case 5:
    $scope = ' <= CURDATE()';
        break;
    default:
    $scope = ' >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)';
    break;
}

我目前得到的select函数:

// Count cart rows
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select('*')
    ->from($db->quoteName('#__product_visits'))
    ->where($db->quoteName('date') . $scope);
$db->setQuery($query);
$results = $db->loadObjectList();
// And here is where I've been stopped :-)

如果您的 'date' 确实是一个日期类型变量,那么它就可以工作 - 不知道您在使用 INTERVALS

做什么
SELECT date_format(`date`,'%Y-%m-%d') as DateVisited, count(*) from #__products_visits group by DateVisited

我在user3741598的帮助下想出来的方法是:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select('date_format(`date`,"%Y,%m,%d") as DateVisited, COUNT(*) as row')
    ->from($db->quoteName('#__product_visits'))
    ->where($db->quoteName('date') . $scope)
    ->group($db->quoteName('DateVisited'));
$db->setQuery($query);
$results = $db->loadObjectList();

然后我通过foreach

中提取组数
$x = $result->DateVisited;

以及每个组的访问次数:

$y = $result->row;