Php 使用codeigniter检查数据库中是否存在数据

Php 使用codeigniter检查数据库中是否存在数据,php,codeigniter,Php,Codeigniter,我有一个场景,我有两个表,即用户和请求,我要求用户填写一个表单,在这个表单中,他还必须填写电子邮件中的其他数据。现在我想,如果用户输入电子邮件,它只需在users表中添加数据并选择最后一个插入id,然后继续在request表中保存数据+最后一个插入id并显示消息 您的帐户已创建 到现在为止,我已经完成了编码,但我遇到的问题是 我希望,如果用户输入的电子邮件已经存在于users表中,那么代码应该选择针对该电子邮件存在的id,并将其与表单数据一起存储在request表中,并显示消息 “请求已提交,但

我有一个场景,我有两个表,即用户和请求,我要求用户填写一个表单,在这个表单中,他还必须填写电子邮件中的其他数据。现在我想,如果用户输入电子邮件,它只需在users表中添加数据并选择最后一个插入id,然后继续在request表中保存数据+最后一个插入id并显示消息

您的帐户已创建

到现在为止,我已经完成了编码,但我遇到的问题是

我希望,如果用户输入的电子邮件已经存在于users表中,那么代码应该选择针对该电子邮件存在的id,并将其与表单数据一起存储在request表中,并显示消息

“请求已提交,但您已拥有帐户,请登录到” 查看更多详细信息“

用户表

id  name          email
1   sam        sam@gmail.com
2   demo_user  demo@gmail.com
请求表

id       email    userid
1     demo@gmail   2
控制器

public function submit()
    {

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

        if($this->form_validation->run() == FALSE)
            {   
                $erdata = array 
                    (
                        'error' => validation_errors()
                    );
                $this->session->set_flashdata($erdata);

                redirect('home/index');
            }   
        else
            {
                if($this->user_model->instant_submit())
                    {
                        $this->session->set_flashdata('msg','Your account is created'); 
                    }
                 else
                     {
                        echo "failed";
                     }
                redirect('home/index');
            }

    }
模型

看法



如果表单元素对于参数中的表和字段名不是唯一的,则返回
FALSE

语法:

is_unique[table.field]
例如:

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');

这将解决您的问题

是否唯一
如果表单元素对于参数中的表和字段名不是唯一的,则返回
FALSE

语法:

is_unique[table.field]
例如:

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');

这将解决控制器中的问题,然后再调用此
$This->user\u model->instant\u submit()

控制器

   public function submit()
        {

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

            if($this->form_validation->run() == FALSE)
                {   
                    $erdata = array 
                        (
                            'error' => validation_errors()
                        );
                    $this->session->set_flashdata($erdata);

                    redirect('home/index');
                }   
            else
                {
                    if(!$this->user_model->check_user_exist($this->input->post('email'))) {
                        if($this->user_model->instant_submit())
                        {
                            $this->session->set_flashdata('msg','Your account is created'); 
                        }
                         else
                         {
                            echo "failed";
                         }
                  } else {
                         //do whatever operation you want to do if user is already exist;
                        $this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details '); 
                 }

                    redirect('home/index');
                }

        }
public function check_user_exist($email_id) {
     $this->db->select('id');
     $this->db->where('email',$email_id);
     $query = $this->db->get('users');
     $data = $query->row();
     if($query->num_rows() == 1) {
         return $data->id;
     } else {
         return false;
     }
}
现在在您的模型中创建一个可以检查用户数据的函数

   public function submit()
        {

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

            if($this->form_validation->run() == FALSE)
                {   
                    $erdata = array 
                        (
                            'error' => validation_errors()
                        );
                    $this->session->set_flashdata($erdata);

                    redirect('home/index');
                }   
            else
                {
                    if(!$this->user_model->check_user_exist($this->input->post('email'))) {
                        if($this->user_model->instant_submit())
                        {
                            $this->session->set_flashdata('msg','Your account is created'); 
                        }
                         else
                         {
                            echo "failed";
                         }
                  } else {
                         //do whatever operation you want to do if user is already exist;
                        $this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details '); 
                 }

                    redirect('home/index');
                }

        }
public function check_user_exist($email_id) {
     $this->db->select('id');
     $this->db->where('email',$email_id);
     $query = $this->db->get('users');
     $data = $query->row();
     if($query->num_rows() == 1) {
         return $data->id;
     } else {
         return false;
     }
}

注意:请记住,如果找不到用户,它将发送false,因此它将为该用户创建一个新条目。

在您的控制器中,然后调用此
$this->user\u model->instant\u submit()
添加另一个条件以检查电子邮件id是否已存在或与下面类似

控制器

   public function submit()
        {

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

            if($this->form_validation->run() == FALSE)
                {   
                    $erdata = array 
                        (
                            'error' => validation_errors()
                        );
                    $this->session->set_flashdata($erdata);

                    redirect('home/index');
                }   
            else
                {
                    if(!$this->user_model->check_user_exist($this->input->post('email'))) {
                        if($this->user_model->instant_submit())
                        {
                            $this->session->set_flashdata('msg','Your account is created'); 
                        }
                         else
                         {
                            echo "failed";
                         }
                  } else {
                         //do whatever operation you want to do if user is already exist;
                        $this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details '); 
                 }

                    redirect('home/index');
                }

        }
public function check_user_exist($email_id) {
     $this->db->select('id');
     $this->db->where('email',$email_id);
     $query = $this->db->get('users');
     $data = $query->row();
     if($query->num_rows() == 1) {
         return $data->id;
     } else {
         return false;
     }
}
现在在您的模型中创建一个可以检查用户数据的函数

   public function submit()
        {

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

            if($this->form_validation->run() == FALSE)
                {   
                    $erdata = array 
                        (
                            'error' => validation_errors()
                        );
                    $this->session->set_flashdata($erdata);

                    redirect('home/index');
                }   
            else
                {
                    if(!$this->user_model->check_user_exist($this->input->post('email'))) {
                        if($this->user_model->instant_submit())
                        {
                            $this->session->set_flashdata('msg','Your account is created'); 
                        }
                         else
                         {
                            echo "failed";
                         }
                  } else {
                         //do whatever operation you want to do if user is already exist;
                        $this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details '); 
                 }

                    redirect('home/index');
                }

        }
public function check_user_exist($email_id) {
     $this->db->select('id');
     $this->db->where('email',$email_id);
     $query = $this->db->get('users');
     $data = $query->row();
     if($query->num_rows() == 1) {
         return $data->id;
     } else {
         return false;
     }
}

注意:请记住,如果未找到用户,它将发送false,因此它将为该用户创建一个新条目。

这里有什么问题??只要用户数据通过验证,就不要插入…检查数据库中是否存在与该数据相关联的用户,并相应地采取行动..这里有什么问题??只要用户数据通过验证,就不要插入…检查数据库中是否存在与该数据相关联的任何用户,并相应地采取行动。。