我正在使用 codeigniter3,当我在更新值时检查用户名时它显示错误,is_unique 不适用于更新场景,因此使用@Anthony Mutisya 的答案,这是完整的解决方案
在您的控制器中,在使用数据库验证当前用户的用户名时添加此行
$this->form_validation->set_rules('user_name', 'User Name', 'required|trim|xss_clean|edit_unique[users.user_name.'.$id.']');
你可以$id
从你提交的表格中得到它。
现在,将以下函数添加/system/libraries/Form_Validation.php
到此文件中。System
文件夹位于 CodeIgniter3 文件夹的根目录中。
/**
* edit_unique // for check on update value
*
* Check if the input value doesn't already exist
* in the specified database field.
*
* @param string $str
* @param string $field
* @return bool
*/
function edit_unique($value, $params) {
$CI =& get_instance();
$CI->load->database();
$CI->form_validation->set_message('edit_unique', "Sorry, that %s is already being used.");
list($table, $field, $current_id) = explode(".", $params);
$query = $CI->db->select()->from($table)->where($field, $value)->limit(1)->get();
if ($query->row() && $query->row()->id != $current_id)
{
return FALSE;
} else {
return TRUE;
}
}
在我的情况下它工作得很好