如何使用Datamapper计算Codeigniter中查询返回的行数

Sha*_*Roy 5 php codeigniter datamapper codeigniter-2 codeigniter-datamapper

我在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);
Run Code Online (Sandbox Code Playgroud)

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

Tig*_*ger 8

CI中提供了以下内容 - 请访问此页面 - http://codeigniter.com/user_guide/database/results.html

$query->num_rows()
Run Code Online (Sandbox Code Playgroud)

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

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

echo $query->num_rows(); 
Run Code Online (Sandbox Code Playgroud)

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

$details->num_rows();
Run Code Online (Sandbox Code Playgroud)


Kem*_*lah 6

如果您只想计算找到的总行数,请调用count()方法而不是get().

$u->where('us_email_id', $username);
$u->where('us_password', $password1);
$total = $u->count();
Run Code Online (Sandbox Code Playgroud)

但是,如果您还需要数据,那么您可以简单地调用get(),然后使用PHP count()来计算all对象属性中有多少元素.

$u->where('us_email_id', $username);
$u->where('us_password', $password1);
$u->get();
$total = count($u->all);
Run Code Online (Sandbox Code Playgroud)

您可以查看文档以获取更多详细信息.