为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 CI 中检查数据库中的匹配结果?

如何在 CI 中检查数据库中的匹配结果?

PHP
呼唤远方 2021-06-29 13:57:04
我希望能够从我的数据库中选择匹配的数据,然后决定要执行的代码,具体来说,我不希望用户能够使用相同的用户名注册两次。我已经尝试了您通常会尝试的方法,将信息发布到控制器中并将其传递给模型以进行计数。然后我尝试了我见过很多人使用的num_rows();.controller.php$userchecker = $_POST['register-username'];$this->load->model('User_exists');$this->User_exists->usercheck($userchecker);            if ($usercheck > 0) {              echo '<p style="color: orange;">A user with this username already exists!</p>';              exit();            }            else {//Insert usermodel.phppublic function usercheck($userchecker) {$this->db->where('ci_useruid', $userchecker);$query = $this->db->get('users');$result = $query->result();$usercheck = $result->num_rows();}我期望发生的是模型根据控制器传递的信息检查用户是否存在,如果存在,则抛出错误。否则,继续像往常一样插入。我得到的错误是:调用数组上的成员函数 num_rows()
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

首先,使用特定的用户名检查数据库中有多少行


模型


public function usercheck($userchecker) {

    return $this->db->get_where('ci_useruid', ['ci_useruid' => $userchecker])->num_rows();

}

控制器


根据函数的结果usercheck做你想做的


$userchecker = $_POST['register-username'];

$this->load->model('User_exists');

$rows = $this->User_exists->usercheck($userchecker);


if ($rows > 0) {

    echo '<p style="color: orange;">A user with this username already exists!</p>';

    exit();

}else {

   //Coding...

}



查看完整回答
反对 回复 2021-07-09
?
青春有我

TA贡献1784条经验 获得超8个赞

你把事情搞混了


$query = $this->db->get('users');


$result = $query->result();

$usercheck = $result->num_rows();

您的$query变量包含整个结果对象。因此,它是$query谁持有->result(),->num_rows()等等。


通过$result与$query->result()您分配是分配您从数据库中获得的对象数组,而不是辅助方法(例如num_rows()仍然存在于 中$query)


也就是说,避免重复用户名的一种更简单的form_validation方法是以这种方式使用该方法:


$this->form_validation->set_rules('field_name', 'Field description', 'required|is_unique[tablename.fieldname]');

然后在控制器中运行表单验证,您将不需要自己处理唯一性


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号