在php codeigniter中复制数据

时间:2017-02-05 11:44:43

标签: php codeigniter

我正在尝试显示带有相应考试密钥的学生列表。但是我的代码复制了数据,考试密钥被分配给了错误的学生(参见图片我的意思)。有人能告诉我我的代码有什么问题吗?我猜这与我的模型有关,但我不知道该改变什么。

Duplicate Data

这是我的代码。

控制器

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;   

查看

 <table class="table table-striped table-advance table-hover">
                       <tbody>
                          <tr>
                            <th><i class="">Student Number</th>
                            <th><i class=""></i> Name</th>
                            <th><i class=""></i> Exam Key</th>

                          </tr>
                <?php

               if($examKey != NULL){
                foreach ($examKey as $row) {
                  echo '<tr>';
                  echo '<td>'.$row->student_no.'</td>';
                  echo '<td>'.$row->lastName.",".$row->firstName." ".$row->middleName.'</td>';
                  echo '<td>'.$row->exam_key.'</td>';

                  echo '<tr>';
                }

               }

我正在使用php codeigniter和postgresql。我刚开始学习这个,我有点困惑。

2 个答案:

答案 0 :(得分:0)

为什么使用两个函数来显示数据

在控制器中使用此功能

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();
}

答案 1 :(得分:0)

问题出在你的加入条款中。其余代码看起来不错。尝试更新join子句,如下所示:

$this->db->join('keys', 'student.course_id = keys.course_id', 'left');

如果无效,请尝试使用以下内容显示您的查询:

print_r($query);

或启用探查器:

$this->output->enable_profiler(TRUE);