【问题标题】:MySQL Query problem in CodeIgniterCodeIgniter 中的 MySQL 查询问题
【发布时间】:2010-04-29 02:48:15
【问题描述】:

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

    $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;

我只得到了最后(第五个)记录的回显,no ipcount 回显。

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

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

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

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

【问题讨论】:

  • 你怎么知道这是第五条记录?您能否以标准 SQL 格式发布您的查询?
  • 添加了标准格式,我知道这是第五个,因为如果我通过输出运行标准查询,则与查询结果的最后一个条目相同。

标签: php mysql codeigniter codeigniter-datamapper


【解决方案1】:

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

我建议您只拆分这 2 个查询。 1. 计数(*) 2.为ip

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多