gpt4 book ai didi

php - Codeigniter 不允许我更新条目,因为某些字段必须是唯一的

转载 作者:行者123 更新时间:2023-11-29 01:07:44 25 4
gpt4 key购买 nike

所以我想做的是:

  1. 从数据库中提取用户数据,包括电子邮件地址、用户名等。

  2. 编辑它

  3. 保存

但我想保持用户名和电子邮件的唯一性。为此,我设置了如下验证规则:

$this->form_validation->set_rules('firstname', 'First Name', 'required|min_length[2]|max_length[15]');
$this->form_validation->set_rules('lastname', 'Last Name', 'required|min_length[2]|max_length[15]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[4]|max_length[12]|is_unique[users.username]');
$this->form_validation->set_rules('password1', 'Password', 'required|matches[password2]');
$this->form_validation->set_rules('password2', 'Password Confirmation', 'required');
$this->form_validation->set_rules('group', 'User Group', 'required');

如您所见,我有 is_unique[users.username]is_unique[users.email] 规则。但它不允许我使用此规则更新我的条目。

所以问题是,我怎样才能更新数据库条目,并使这 2 个字段保持唯一(用户名和电子邮件)?

最佳答案

使用回调验证函数

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|callback_check_user_email');

function check_user_email($email) {
if($this->input->post('id'))
$id = $this->input->post('id');
else
$id = '';
$result = $this->user_model->check_unique_user_email($id, $email);
if($result == 0)
$response = true;
else {
$this->form_validation->set_message('check_user_email', 'Email must be unique');
$response = false;
}
return $response;
}

在模型中

    function check_unique_user_email($id = '', $email) {
$this->db->where('email', $email);
if($id) {
$this->db->where_not_in('id', $id);
}
return $this->db->get('user')->num_rows();
}

使用相同的用户名....

关于php - Codeigniter 不允许我更新条目,因为某些字段必须是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com