0

我有这个

$query = mysql_query("SELECT *, COUNT(*) FROM impressions WHERE pub_tag = '$pub_tag' AND pub_id = '$pub_id' AND month = '$date' GROUP BY country");
while($stat_cont = mysql_fetch_array($query)) {
echo '[\''.$stat_cont['country'].'\', '.$stat_cont['COUNT(*)'].'],';
}

它什么也没有显示也没有错误。当删除 WHERE 时,它可以工作。

CREATE TABLE IF NOT EXISTS `impressions` (
  `id` int(15) unsigned NOT NULL AUTO_INCREMENT,
  `pub_id` int(10) unsigned NOT NULL,
  `pub_tag` varchar(10) NOT NULL,
  `time` int(10) unsigned NOT NULL,
  `month` int(6) unsigned NOT NULL,
  `ip` int(15) unsigned NOT NULL,
  `country` varchar(100) NOT NULL,
  `country_city` varchar(150) NOT NULL,
  `country_region` varchar(100) NOT NULL,
  `country_code` varchar(2) NOT NULL,
  `revenue` float unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ;
4

2 回答 2

0

如果您想通过对“国家/地区”进行分组来获得结果,请不要在查询中给出“*”,而是在选择和分组方式中给出国家/地区。

于 2013-01-27T18:01:57.440 回答
0
  1. 将您的查询放入一个变量中,echo然后查看发送到 MySQL 的确切内容。

    $stmt = "SELECT ... ";
    echo $stmt;

  2. 为聚合使用别名:

    SELECT Country, COUNT(*) AS count ...

  3. mysql_功能已弃用。请不要在新代码中使用它们。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。

  4. MySQL 扩展GROUP BY了可能产生不良结果的功能。最好不要选择不在您的GROUP BY

于 2013-01-27T17:53:02.217 回答