CodeIgniter中的MySQL Query问题

时间:2010-04-29 02:48:15

标签: php mysql codeigniter codeigniter-datamapper

所以我使用以下内容:

    $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中的一个错误,但我不太确定。

此外,我发现即使我使用$r->query()方法,如果我使用SELECT ip FROM soapi WHERE 1;之类的内容,它也不会返回除最后一个条目之外的任何内容。然而,如果我说SELECT * FROM soapi WHERE 1;,它将返回所有内容(就像它应该的那样)。如果它没有*,则只返回最后一行。

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

1 个答案:

答案 0 :(得分:0)

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

我建议您只拆分这两个查询。 1.对于COUNT(*) 2.对于ip

希望得到这个帮助。