基于PHP Mysql列对结果进行分组和计数

时间:2017-11-12 17:05:29

标签: php mysql

我有一张表格记录这样的页面:

id  |  ip_address       | page_id
---------------------------------------
1   |  192.123.456.78   | 2787321    
2   |  192.000.000.00   | 2787321
3   |  192.123.456.78   | 342415
4   |  192.123.456.78   | 2787321
5   |  192.432.999.80   | 2787321

我得到的结果是这样的:

$getHits = $wpdb->get_results( "SELECT * FROM $table WHERE page_id = $pageID" );

我想根据每个IP访问相同ip_address的次数,显示按page_id分组的结果。

所需输出的示例(其中$pageID = 2787321):

192.123.456.78 - 2 Views
192.000.000.00 - 1 View
192.432.999.80 - 1 View

我一直在尝试一些事情(主要分组并在while和foreach循环中运行)但它很快变得非常复杂,我无法让它工作。

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您不应该使用var进行dinamic查询,否则您将面临sqlinjection的风险 无论如何

 $wpdb->get_results( "SELECT ip_address, count(*) hits  
          FROM $table WHERE page_id = $pageID 
          GROUP BY ip_address 
          ORDER BY hits DESC" );

http://www.mysqltutorial.org/mysql-group-by.aspx