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')后面尝试此行;