5

我在 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);

在上面的代码中,“$u”是数据映射器“User”的类“User”的对象名称,其中我的数据库中的表名是“users”。我想看看执行查询后返回了多少行。即使用户名和密码不匹配,“$total”也始终显示 1。我想要的是,如果返回的行数为 1,那么“ok”,否则“有问题”。我知道它的基本知识,但如果有人知道它,请帮助我。提前致谢。

4

3 回答 3

8

以下是 CI 中可用的 - 查看此页面 - http://codeigniter.com/user_guide/database/results.html

$query->num_rows()

查询返回的行数。注意:在本例中,$query 是查询结果对象分配给的变量:

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

echo $query->num_rows(); 

所以在你上面的例子中你需要尝试

$details->num_rows();
于 2012-05-02T09:56:59.300 回答
6

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.

于 2012-05-02T10:01:44.023 回答
1

如果密码已加密,请重试

或者如果所有数据部分都很好,请尝试使用以下代码

$this->db->where(array('us_email_id' => $username,'us_password' => $password1));
echo $this->db->count_all_results('users');
于 2013-04-23T19:02:46.790 回答