Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter检查编辑功能上是否存在重复_Php_Codeigniter_Codeigniter 3 - Fatal编程技术网

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