Codeigniter检查编辑功能是否重复

时间:2019-07-31 03:23:22

标签: php codeigniter codeigniter-3

检查编辑功能是否重复

当前我的数据库表

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

3 个答案:

答案 0 :(得分:0)

考虑您有一个名为userName的用户名输入,一种解决方案是您可以添加一个条件is_unique验证,这样,如果用户不更改其用户名,则不要将其验证为独一无二。
这可以通过按ID从数据库中提取用户的userName并将其与发布的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);

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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