我在更新两个表的内容时遇到问题。这些表是关于用户的,第一个表用于登录目的,因此它包含用户名、电子邮件和密码,而第二个表用于用户详细信息。两者都与用户行的 ID 连接。我在更新这些内容时遇到问题。这是我的代码,我是 CI 新手,所以基本上不知道出了什么问题。
Controller :
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Student extends CI_Controller {
public function index()
{
$this->load->model('student_model');
$data['all_students'] = $this->student_model->get_student_list();
$this->load->view('admin_panel', $data);
}
public function view_student()
{
$this->load->model('student_model');
$data['one_student'] = $this->student_model->get_one_student();
$this->load->view('view_student', $data);
}
public function edit_student()
{
$this->load->model('student_model');
$data['one_student'] = $this->student_model->get_one_student();
$this->load->view('edit_student', $data);
}
public function update_student()
{
$this->load->model('student_model');
$data['update_student'] = $this->student_model->update_student();
$this->load->view('admin_panel', $data);
}
}
查看
<?php $this->load->view('worker_templates/wheader');
$this->output->enable_profiler(TRUE);
$this->load->helper('form');
echo "<br/><br/><br/><br/><br/>";
echo form_open('student/update_student');
foreach ($one_student as $key => $value)
{
echo "<div class='col-md-6'>";
echo form_label('Name ', 'worker_name');
echo form_input('Name', $value['worker_name']);
echo form_label('Role ', 'role');
echo form_input('Role', $value['role']);
echo form_label('Email ', 'worker_email');
echo form_input('Email', $value['worker_email']);
echo "<br/><br/>";
echo form_label('Phone ', 'phone');
echo form_input('Phone', $value['phone']);
...
这很长,所以我不会把它全部复制来让你感到无聊。
型号:
public function get_one_student() //used to show a student, also to display data of one student for update
{
$this->db->select('*');
$this->db->from('workers');
$this->db->join('worker_details', 'worker_details.student_id = workers.worker_id');
$this->db->where('worker_id', $_GET['id']);
$q = $this->db->get();
return $q->result_array();
}
public function update_student()
{
$data = array(
'worker_name' => $this->input->post('worker_name'),
'worker_email' => $this->input->post('worker_email'),
'role' => $this->input->post('role'));
$this->db->update('workers', $data); //first table
$data2 = array(
'phone' => $this->input->post('phone'),
'date_of_birth' => $this->input->post('date_of_birth'),
'sex' => $this->input->post('sex'),
'university' => $this->input->post('university'),
'speciality' => $this->input->post('speciality'),
... //again, very long, not including it all
);
$this->db->update('worker_details', $data2);//second table
}
最佳答案
您需要更正模型中的 update_student() 函数。请将worker_id从您的html表单中隐藏起来,并按如下所示更正函数。
public function update_student()
{
$data = array(
'worker_name' => $this->input->post('worker_name'),
'worker_email' => $this->input->post('worker_email'),
'role' => $this->input->post('role'));
$this->db->where('worker_id', $this->input->post('worker_id'));
$this->db->update('workers', $data); //first table
$data2 = array(
'phone' => $this->input->post('phone'),
'date_of_birth' => $this->input->post('date_of_birth'),
'sex' => $this->input->post('sex'),
'university' => $this->input->post('university'),
'speciality' => $this->input->post('speciality'),
... //again, very long, not including it all
);
$this->db->where('worker_id', $this->input->post('worker_id'));
$this->db->update('worker_details', $data2);//second table
}
关于php - 使用 CI 更新两个表中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873157/