php - 如何从在线插入到两个表中?

标签 php mysql codeigniter

是否可以同时插入两个表?我需要将一些数据插入到表(学生)中,然后根据主键插入到另一个表(注册)中。这可能吗? 然而,注册表从另一个名为学校 (id) 的表中提取其他主键。

public function add()
{
    if(isset($_POST['submit'])) {
        $this->student_validation();
        if($this->form_validation->run() === TRUE) {
            $data = $this->_get_posted_student_data();
            $insert_id = $this->student->insert('students', $data);
            if($insert_id) {
                $this->__insert_enrollment($insert_id);
                success($this->lang->line('insert_success'));
                redirect('web/index/' . $data['front_school_id']);
            } else {
                error($this->lang->line('insert_failed'));
                redirect('web/admission');
            }
        } else {
            $this->data['post'] = $_POST;
        }
    }
    $this->data['schools'] = $this->schools;
    $this->data['add'] = TRUE;
    $this->layout->title($this->lang->line('add') . ' ' . $this->lang->line('student') . ' | ' . SMS);
    $this->layout->view('web/index', $this->data);
}

private function __insert_enrollment($insert_id)
{
    $data = array();
    $school = $this->student->get_school_by_id($this->input->post('front_school_id'));
    $data['student_id'] = $insert_id;
    $data['school_id'] = $this->input->post('front_school_id');
    //$data['class_id'] = $this->input->post('class_id');
    //$data['section_id'] = $this->input->post('section_id');
    $data['academic_year_id'] = $school->academic_year_id;
    //$data['roll_no'] = $this->input->post('roll_no');
    $data['created_at'] = date('Y-m-d H:i:s');
    //$data['created_by'] = logged_in_user_id();
    $data['status'] = 1;
    $this->db->insert('enrollments', $data);
}

private function _get_posted_student_data()
{
    $items = array();
    $school_id = $this->session->userdata('front_school_id');
    $items[] = 'first_name';
    $items[] = 'middle_name';
    $items[] = 'last_name';
    $items[] = 'gender';
    $items[] = 'religion';
    $items[] = 'dobpin';
    $items[] = 'address';
    $items[] = 'immunization_update';
    $items[] = 'nationality';
    $items[] = 'valid_permit';
    $items[] = 'relation_father';
    $items[] = 'father_name';
    $items[] = 'father_phone';
    $items[] = 'father_email';
    $items[] = 'father_address';
    $items[] = 'relation_mother';
    $items[] = 'mother_name';
    $items[] = 'mother_phone';
    $items[] = 'mother_email';
    $items[] = 'mother_address';
    $items[] = 'other_sibling';
    $items[] = 'name_sibling';
    $items[] = 'class_sibling';
    $items[] = 'name';
    $items[] = 'relation';
    $items[] = 'child';
    $items[] = 'application_name';
    $data = elements($items, $_POST);
    $data['dob'] = date('Y-m-d', strtotime($this->input->post('dob')));
    $data['admission_date'] = date('Y-m-d', strtotime($this->input->post('admission_date')));
    $data['age'] = floor((time() - strtotime($data['dob'])) / 31556926);
    $data['modified_at'] = date('Y-m-d H:i:s');
    //$data['modified_by'] = logged_in_user_id();
    $data['created_at'] = date('Y-m-d H:i:s');
    //$data['created_by'] = logged_in_user_id();
    $data['status'] = 1;
    // create user 
    //$data['user_id'] = $this->student->create_user();
    if($_FILES['birth_certificate']['name']) {
        $data['birth_certificate'] = $this->_upload_birth_certificate();
    }
    if($_FILES['bill']['name']) {
        $data['bill'] = $this->_upload_bill();
    }
    if($_FILES['immunization']['name']) {
        $data['immunization'] = $this->_upload_immunization();
    }
    if($_FILES['photo']['name']) {
        $data['photo'] = $this->_upload_photo();
    }
    return $data;
}

最佳答案

您需要$this->db->insert_id()来获取最后插入的ID,该ID将从这里获得。

$this->db->insert('students', $data);
$insert_id = $this->db->insert_id();
if(!empty($insert_id)) {
  $this->__insert_enrollment($insert_id);
  success($this->lang->line('insert_success'));
  redirect('web/index/' . $data['front_school_id']);
} else {
  error($this->lang->line('insert_failed'));
  redirect('web/admission');
}

关于php - 如何从在线插入到两个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628446/

相关文章:

java - 什么编码使这些字符与卡隆一起变成不同的东西

javascript - 使用 javascript 中的append() 到带有 PHP 代码的选择表单

codeigniter - Codeigniter 中的钩子(Hook)

php - CodeIgniter 问题 : native PHP sessions, 代码流程,布局问题?

php - 当网站托管在centos vmware中时,无法获取$_FILE ["name"] ["tmp_name"]

php - 如何理解关闭窗口

php - CodeIgniter 将多维数组作为单独的行插入到数据库表中

php strtotime "last friday April 2012"上周五没有返回

javascript - 如何使用此 JavaScript 在模型和 Controller 中存储数组?

MySQL 查询 : Getting the most recent forum post