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

检查编辑功能是否重复


目前我的数据库表


USERDB

userId 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');        

}


HUH函数
浏览 134回答 3
3回答

拉莫斯之舞

请您分享函数 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");}

慕哥6287543

考虑到您的用户名输入名为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);

精慕HU

而不是检查 if ($query == true)。检查 if ($validation == true) 和您的 else 条件是错误的,就像用户名重复一样,它将进入 if 条件。
打开App,查看更多内容
随时随地看视频慕课网APP