Php Codeigniter检查编辑功能上是否存在重复
在编辑功能上检查是否存在重复 当前我的数据库表Php Codeigniter检查编辑功能上是否存在重复,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,在编辑功能上检查是否存在重复 当前我的数据库表 USERDB userId userName userPassword userEmail userAddress userPhone 我想要什么 允许检查“用户名”重复,如果“用户名”返回 如果为true,则允许编辑其他文本字段 遇到的问题: 当我没有在“用户名”字段上更改任何内容时,我编辑了 userEmail,由于我的“用户名”为 与当前数据库数据复制 更新型号代码 public function updateUser($userName,
USERDB
userId userName userPassword userEmail userAddress userPhone
我想要什么
允许检查“用户名”重复,如果“用户名”返回
如果为true,则允许编辑其他文本字段
遇到的问题:
当我没有在“用户名”字段上更改任何内容时,我编辑了
userEmail,由于我的“用户名”为
与当前数据库数据复制
更新型号代码
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');
}
而不是检查($query==true)。检查($validation==true)你的else条件是错误的,因为如果用户名是重复的,它将进入if条件。考虑到你的用户名输入名为
username
,一个解决方案是你可以添加一个有条件的is_unique
验证,这样如果用户不更改他/她的用户名,就不会将其验证为unique。这可以通过按id从数据库中提取用户的
用户名
,并将其与发布的用户名
值进行比较来实现:
$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);
请分享函数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");
}
你能给我看看这个
updateUser()
code吗?@HastaDhana在第一篇博文中加了一句什么意思?我对此感到困惑
$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");
}