繁体   English   中英

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

[英]Check if data exist in database using codeigniter

我有一个场景,其中有2个表,即用户和请求,我要用户填写表格,在表格中,他还必须填写其他数据以及电子邮件。 现在我希望如果用户输入电子邮件,则只需在用户表中添加数据并选择最后一个插入ID,然后继续将数据+最后插入的ID保存在请求表中并显示消息

您的帐户已创建。

直到这里我已经完成了编码,但是卡住的部分是

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

“请求已提交,但您已经有一个帐户,请登录以查看详细信息”

用户表

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

    }

模型

public function instant_submit()
    {
        $userdata = array(
            'email' => $this->input->post('email')
        );

        $insert_data = $this->db->insert('users', $userdata);
        $lastid = $this->db->insert_id();

        $reqdata = array(
            'email' => $this->input->post('email'),
            'userid' => $lastid, 
            'status'=>'pending'
             );

        $insert_request = $this->db->insert('request', $reqdata);
        return $insert_data;
    }

视图

<?php if($this->session->flashdata('msg')): ?>
    <?php echo $this->session->flashdata('msg'); ?>
<?php endif; ?>

    <?php
        $reg_attributes = array('id'=>'form','role'=>"form");
        echo form_open('home/submit', $reg_attributes); 
    ?>


    <?php
        $data = array(
            'type'=>'text',
            'name'=>'email',
            'placeholder'=>'Email',
             'class'=>'form-control', 
            'id'=>'form-email'
        );

        echo form_input($data);                                            
    ?>


    <?php
        $data = array(
            'type'=>'submit',
            'class'=>'btn-primary',
            'name'=>'submit',
            'content'=>'Submit!'

        );

        echo form_button($data); 
    ?>


<?php echo form_close(); ?>

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

句法 :

is_unique[table.field]

范例:

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

这将解决您的问题

在调用此$this->user_model->instant_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;
     }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM