how to count the number of rows returned by query in Codeigniter with Datamapper

I am using the following query in controller of codeigniter.

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

In the above code "$u" is the object name for the class "User" for the datamapper "User" where the table name in my database is "users". I want to see how many rows are returned after executing the query. "$total" always displays 1 even if userid and password is not matched. What I want is , if number of rows returned 1 then "ok" else "something wrong". I know its basic but if somebody know it then please help me out. Thanks in advance.

Answers


If you just want to count the total rows found, call the count() method instead of get().

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

But, if you also need the data, then you can simply call get(), and after that use PHP count() to count how many elements are there inside the all property of the object.

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

You can check out the documentation for more details.


Following is availab in CI - checkout this page - http://codeigniter.com/user_guide/database/results.html

$query->num_rows()

The number of rows returned by the query. Note: In this example, $query is the variable that the query result object is assigned to:

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

echo $query->num_rows(); 

so that in your example above you need to try

$details->num_rows();

Need Your Help

Marshal C# class with reference members to C++

c# c++ pointers marshalling

We have a task to pass a class with a reference to another class from C# to C++. C# class looks like this:

How can I use inverse or negative wildcards when pattern matching in a unix/linux shell?

bash shell pattern-matching glob

Say I want to copy the contents of a directory excluding files and folders whose names contain the word 'Music'.