[英]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.