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

Codeigniter 在编辑功能上检查重复项

Codeigniter 在编辑功能上检查重复项

PHP
HUH函数 2021-11-05 14:45:44
检查编辑功能是否重复目前我的数据库表USERDBuserId userName userPassword userEmail userAddress userPhone我想要的是允许检查“userName”重复”,如果“userName”返回 true ,则允许编辑其他文本字段。遇到的问题:当我没有更改“userName”字段中的任何内容,并且我编辑了 userEmail 时,由于我的“userName”与当前数据库数据重复,它总是会返回 FALSE。$checkvalidation = $this->userdb->UsernameDuplicatechecking($userName);if($checkvalidation == TRUE){$this->userdb->updateUser($userName,$userEmail,$userAddress,$userPhone,$id);}else{  $this->session->set_flashdata('errormessage', 'Duplicate');  redirect("User/EditUserAccount/$id");  }更新型号代码public function updateUser($userName,$userEmail,$userAddress,$userPhone,$id);{    $UserArray = array(                    'userName' => $userName,                    'userEmail' => $userEmail,                    'userAddress' => $userAddress,                    'userPhone' => $userPhone,                                    );    $this->db->set($UserArray);    $this->db->where('userId',$id);    $this->db->update('USERDB');        }
查看完整描述

3 回答

?
拉莫斯之舞

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

请您分享函数 UsernameDuplicatechecking($userName) 的代码,或者您可以尝试以下解决方案,如果有帮助,请告诉我。将以下函数添加到您的 userdb 模型中


function checkDuplicateUsername($userName)

{

    $this->db->where('userName',$userName);

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

    if ($query->num_rows() > 0){

        return true;

    }

    else{

        return false;

    }

}

现在更新您的控制器功能如下:


$checkvalidation = $this->userdb->checkDuplicateUsername($userName);

if($checkvalidation == true){

    $this->userdb->updateUser($userName,$userEmail,$userAddress,$userPhone,$id);

}else{

  $this->session->set_flashdata('errormessage', 'Your message here');

  redirect("User/EditUserAccount/$id");

}


查看完整回答
反对 回复 2021-11-05
?
慕哥6287543

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

考虑到您的用户名输入名为userName,一种解决方案是您可以添加条件is_unique验证,以便如果用户不更改他/她的用户名,则不要将其验证为唯一的。

这可以通过userName按 id 从数据库中提取用户并将其与发布的userName值进行比较来完成:


$id = $this->input->post('id');

$old_username = $this->db->get_where('USERDB', array('userId' => $id))->row_array();

$original_value = $old_username['userName'];


if($this->input->post('userName') != $original_value) {

    $is_unique =  '|is_unique[USERDB.userName]'

} else {

    $is_unique =  ''

}


$this->form_validation->set_rules('userName', 'User Name', 'required|trim|xss_clean'.$is_unique);


查看完整回答
反对 回复 2021-11-05
?
精慕HU

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

而不是检查 if ($query == true)。检查 if ($validation == true) 和您的 else 条件是错误的,就像用户名重复一样,它将进入 if 条件。


查看完整回答
反对 回复 2021-11-05
  • 3 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信