Php 如何使用CodeIgniter检查数据库中是否已存在电子邮件

Php 如何使用CodeIgniter检查数据库中是否已存在电子邮件,php,codeigniter,Php,Codeigniter,我在做CodeIgniter的应用程序。我不知道如何将电子邮件与CodeIgniter中的db进行比较,请任何人帮助我 控制器 public function signup() { $this->load->view('signup'); } public function savedata(){ $this->load->library('form_validation'); $this->form_validation->set

我在做CodeIgniter的应用程序。我不知道如何将电子邮件与CodeIgniter中的db进行比较,请任何人帮助我

控制器

public function signup()
{
    $this->load->view('signup');

}
public function savedata(){

$this->load->library('form_validation');        
$this->form_validation->set_rules('firstname', 'firstname', 'required'); 
$this->form_validation->set_rules('lastname', 'lastname', 'required'); 


if ($this->form_validation->run() == TRUE) // Only add new option if it is unique
{       
    $result = $this->account_model->insert();
    if($result > 0)
    {
    $data['message'] = "Added successfully";    

    $this->load->view('signup',$data);
    }
    else
    {
    $this->index(); 
    }
}
else
{
    $this->load->view('signup');
}
}
如何检查电子邮件是否已存在?

添加规则:

$this->form_validation->set_rules('email', 'Email', 'callback_rolekey_exists');
在同一控制器中:

function rolekey_exists($key) {
  $this->roles_model->mail_exists($key);
}
在模型中

function mail_exists($key)
{
    $this->db->where('email',$key);
    $query = $this->db->get('users');
    if ($query->num_rows() > 0){
        return true;
    }
    else{
        return false;
    }
}

假设您有
用户
表和
电子邮件
列。因此,您必须在表单验证中添加这一行

$this->form_validation->set_rules('email','Email','required|valid_email|is_unique[users.email]');
注意 在你的
电子邮件
栏中需要一个唯一的索引

检查

//在模型中键入此项

最佳方式

 $this->form_validation->set_rules('username', 'User', 'trim|required|callback_username_Exist');
        //type in controller in form validation
$this->form_validation->set_rules(
            'email', 'Email', 'valid_email|required|is_unique[usr_user.user_email]',
            array('is_unique' => 'This %s already exists.')
        );

您在哪里传递电子邮件?检查
是否唯一
验证规则非常感谢您的回复。我得到了答案。已经有了
is_unique
规则,不需要自己创建,而且您需要从回调函数返回
true/false
。并为自定义回调定义
错误消息
是唯一的
是最好的方法,尽管@DamienPirsy提到了这一点。这同样适用于电子邮件。我刚刚创建了函数用户名。请在控制器中键入此项
 $this->form_validation->set_rules('username', 'User', 'trim|required|callback_username_Exist');
        //type in controller in form validation
$this->form_validation->set_rules(
            'email', 'Email', 'valid_email|required|is_unique[usr_user.user_email]',
            array('is_unique' => 'This %s already exists.')
        );