php codeigniter视图中的数据复制
我试图显示一个学生列表及其相应的考试密钥。但是我的代码复制了数据,并且考试密钥被分配给了错误的学生(参见图片我的意思)。有人能告诉我我的代码有什么问题吗?我猜这和我的模型有关,但我不知道该怎么改变 这是我的密码 控制器php codeigniter视图中的数据复制,php,codeigniter,Php,Codeigniter,我试图显示一个学生列表及其相应的考试密钥。但是我的代码复制了数据,并且考试密钥被分配给了错误的学生(参见图片我的意思)。有人能告诉我我的代码有什么问题吗?我猜这和我的模型有关,但我不知道该怎么改变 这是我的密码 控制器 public function loadExamKey($examNo){ $this->load->model('exam_model'); $data = $this->addExamKey($examNo); $data = $t
public function loadExamKey($examNo){
$this->load->model('exam_model');
$data = $this->addExamKey($examNo);
$data = $this->exam_logs($examNo);
$data['examKey'] = $this->exam_model->displayExamKeys($examNo);
$this->load->view('exam_key', $data);
}
模型
public function displayExamKeys($examNo){
$this->db->select('student.lastName');
$this->db->select('student.firstName');
$this->db->select('student.middleName');
$this->db->select('student.student_no');
$this->db->select('keys.exam_key');
$this->db->from('student');
$this->db->join('keys', 'student.course_id = keys.course_id');
$this->db->where('exam_no', "$examNo");
$query = $this->db->get();
if($query->num_rows() > 0){
return $query->result();
}
else
return false;
看法
学号
名称
考试钥匙
为什么要使用两个函数来显示数据
在控制器中使用此功能
public function loadExamKey($examNo)
{
$data = $this->addExamKey($examNo);
$data = $this->exam_logs($examNo);
$data['examKey'] = $this->displayExamKey($examNo);
$this->load->view('exam_key', $data);
}
public function displayExamKeys($examNo)
{
$this->db->select('student.*,keys.exam_key');
$this->db->from('student');
$this->db->join('keys', 'student.course_id = keys.course_id');
$this->db->where('student.exam_no', $examNo);
$this->db->group_by('exam_no');
$query = $this->db->get();
return $query->result();
}
在模型中使用此函数
public function loadExamKey($examNo)
{
$data = $this->addExamKey($examNo);
$data = $this->exam_logs($examNo);
$data['examKey'] = $this->displayExamKey($examNo);
$this->load->view('exam_key', $data);
}
public function displayExamKeys($examNo)
{
$this->db->select('student.*,keys.exam_key');
$this->db->from('student');
$this->db->join('keys', 'student.course_id = keys.course_id');
$this->db->where('student.exam_no', $examNo);
$this->db->group_by('exam_no');
$query = $this->db->get();
return $query->result();
}
问题出在您的join子句中。代码的其余部分看起来不错。尝试更新join子句,如下所示:
$this->db->join('keys', 'student.course_id = keys.course_id', 'left');
如果不起作用,请尝试使用以下方法可视化查询:
print_r($query);
或者通过启用探查器:
$this->output->enable_profiler(TRUE);
不,这是不同的,控制器中的一个只是加载模型中的displayExamKeys函数。但我已经编辑了它,并删除了控制器中的displayExamKey(),但仍然不起作用。它不起作用。我使用了print_r(),它还显示数据重复和错误分配的检查密钥。请在$this->db->where('exam_no',“$examNo”)之后尝试这一行$此->数据库->分组依据(“检查编号”)@GeordyJames它也不起作用,我收到错误:消息:pg_query():查询失败:错误:列“student.lastName”必须出现在GROUP BY子句中或用于聚合函数行1:选择“student”、“lastName”、“student”、“firstName”、“student…”是否可以发布所有属性(所有列字段)学生表和keys表以及questionSTUDENT(lastName、firstName、middleName、classCode、学生号、课程号)。keys(考试号、考试号、课程号)。在这里。请在$this->db->where('exam\u no',“$examNo”);$this->db->group\u by('exam\u keys')后面尝试此行;