CodeIgniter'daki MySQL Query sorun

1 Cevap php

Yani aşağıdaki kullanıyorum:

    $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 />");
    }

Standart:

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

Ve ben sadece almak son (beşinci) kaydı dışarı echo'ed ve no ipcount yankılandı.

Bu dolaşmak için farklı bir yolu var mı? Ben DataMapper (dolayısıyla soru) öğrenme üzerinde çalışan ve bu bazı anlamaya ihtiyacımız var. Oldukça bütün ORM şey etrafında başımı sarılı değil.

Komik select() deyimi olmadan count(*) as ipcount ayarlamak için bir yolu var mı? Ben nedense tetikleme sanmıyorum. Bu da DataMapper bir hata olabilir, ama bu daha az eminim.

Ayrıca ben SELECT ip FROM soapi {[gibi bir şey kullanın ben $r->query() yöntemini kullanmak bile o son girişin dışında hiçbir şey dönmez bulundu (3)]}. I SELECT * FROM soapi WHERE 1; derseniz Ancak (olması gerektiği gibi) her şeyi dönecektir. O yoksa * sadece son satırı döndürür.

Sadece yeni bir sorgu, tüm sütunları seçme dışında herhangi bir şey ile doğrulandı (*), sadece son kaydı döndürür. Bu herhangi bir yardım büyük olurdu. Sen select *, count(*) as ipcount gibi bir açıklama zanaat olabilir ama o hala $record->ipcount aracılığı erişimi yok.

1 Cevap

Eğer MySQL COUNT () işlevini kullanmak bir kere durumda, sadece 1 değerini döndürür. Dolayısıyla ip sonuç bilgileri görüntüler olmaz.

I suggest you just split this 2 queries. 1. for COUNT(*) 2. for ip

Umarım bu yardımcı olur.