5

Używam następujące zapytanie w kontrolerze codeigniter.Jak policzyć liczbę wierszy zwróconych przez zapytanie w Codeigniter z Datamapper

$u -> where('us_email_id', $username); 
    $u -> where('us_password', $password1); 
    $details = $u -> get(); 
    $total = count($details); 
    echo $total; echo "<br>"; 
    echo count($details); 

W powyższym kodzie „$ u” jest nazwą obiektu dla klasy „Użytkownik” dla DataMapper „Użytkownikiem”, gdzie nazwa tabeli w mojej bazy danych to „użytkownicy”. Chcę zobaczyć, ile wierszy jest zwracanych po wykonaniu kwerendy. "$ total" zawsze wyświetla 1, nawet jeśli identyfikator użytkownika i hasło nie są dopasowane. Chcę, aby liczba wierszy zwróciła 1, a następnie "ok", inaczej "coś nie tak". Znam jego podstawowe, ale jeśli ktoś to wie, pomóż mi. Z góry dziękuję.

Odpowiedz

6

Jeśli chcesz po prostu liczyć w sumie znaleziono wiersze, wywołaj metodę count() zamiast get().

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$total = $u->count(); 

Ale jeśli trzeba także dane, to można po prostu zadzwonić get(), a potem użyć PHP count() policzyć ile elementy są tam wewnątrz nieruchomego obiektu all.

$u->where('us_email_id', $username); 
$u->where('us_password', $password1); 
$u->get(); 
$total = count($u->all); 

Możesz sprawdzić dokumentację, aby uzyskać więcej informacji.

+0

idealny ... wiele wiele (nieskończone czasy) dzięki tobie ... :) –

+0

Bezpieczniejszym sposobem policzenia wyników po uruchomieniu zapytania jest użycie $ u-> result_count(). To zlicza wyniki z $ this -> _ dm_dataset_iterator, jeśli jego zestaw, zamiast tego używa count ($ this-> all). –

8

Poniżej znajduje Availab w CI - kasy tę stronę - http://codeigniter.com/user_guide/database/results.html

$query->num_rows() 

liczbę wierszy zwracanych przez kwerendę. Uwaga: W tym przykładzie $ zapytanie jest zmienna, że ​​obiekt wynik zapytania jest przypisany do:

$query = $this->db->query('SELECT * FROM my_table'); 

echo $query->num_rows(); 

tak, że w swoim powyższym przykładzie trzeba spróbować

$details->num_rows(); 
+0

nie działa w codeigniter, gdy używamy Datamapper do DB Query ... Ale jeśli jesteśmy pracując z aktywnym zapisem codeigniter, to jest w porządku. Tak czy inaczej jest to naprawdę niesamowite i jestem wdzięczny, że poświęciłeś mi trochę czasu. to, co zasugerował Kemal Fadillah, działa doskonale. ale czas jest bardzo cenny i zainwestowałeś, by mi pomóc. bardzo dziękuję za to :) –

+1

Bez problemu - Shashi - Wiem, że wyraźnie wspomniałeś o datamapperie, ale po prostu mi się nie przydarzyło i opublikuję powyższe dla activerecord. W każdym razie zdarza się ... – TigerTiger

1

Jeśli hasło zostało zaszyfrowane i spróbuj ponownie

czy cała część danych jest w porządku, ale spróbuj użyć następującego kodu

$this->db->where(array('us_email_id' => $username,'us_password' => $password1)); 
echo $this->db->count_all_results('users'); 
Powiązane problemy