0

所以我正在使用以下内容:

    $r = new Record();
    $r->select('ip, count(*) as ipcount');
    $r->group_by('ip');
    $r->order_by('ipcount', 'desc');
    $r->limit(5);

    $r->get();

    foreach($r->all as $record)
    {
        echo($record->ip." ");
        echo($record->ipcount." <br />");
    }

标准:

SELECT `ip`, count(*) as ipcount FROM (`soapi`) GROUP BY `ip` ORDER BY `ipcount` desc LIMIT 5;

而且我只得到了最后(第五个)记录的回声,没有 ipcount回声。

有没有不同的方法来解决这个问题?我正在学习 DataMapper(因此有问题),需要弄清楚其中的一些。我还没有完全理解整个 ORM 的事情。

有没有办法设置count(*) as ipcount没有有趣的select()声明?我不认为它是出于某种原因触发的。这也可能是 DataMapper 中的一个错误,但我不太确定。

我还发现,即使我使用该方法,如果我使用类似ip soapi 之$r->query()类的东西,除了最后一个条目外,它不会返回任何内容。但是,如果我说,它将返回所有内容(应该如此)。如果没有,它只返回最后一行。SELECTFROMWHERE 1;SELECT * FROM soapi WHERE 1;*

刚刚使用新查询进行了验证,除了选择所有列 ( *) 之外的任何内容都只返回最后一条记录。对此的任何帮助都会很棒。您可以制作一个类似的声明,select *, count(*) as ipcount但您仍然无法通过$record->ipcount.

4

1 回答 1

0

对于您的情况,一旦您在 MySQL 中使用 COUNT() 函数,它只会返回 1 个值。因此,您ip的结果数据不会显示出来。

我建议你把这两个查询分开。1. 对于 COUNT(*) 2. 对于ip

希望这有帮助。

于 2011-11-25T07:19:23.000 回答