检查编辑功能是否重复
当前我的数据库表
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');
}
答案 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条件。