表中的重复答案

时间:2013-03-05 11:04:55

标签: php sql codeigniter

大家好我正在研究一个小的初学者项目,目前我正在研究HTML表格中的两个单独的表格数据,但是我遇到了一些数据问题。有一个凭证表和一个答案表,用户首先输入其凭据然后按下按钮获取存储凭据的表格,并将用户重定向到问题页面,在那里他选择一个多项选择问题,用户选择是保存到表格中。然后,所有这些数据都显示在网页上,但是当显示数据时,每个输入其详细信息的用户都会得到重复的答案。谁能告诉我哪里出错了? tnx提前为您提供帮助。

查看

 <table border="1">


  <tr>
     <th>Name</th>
     <th>Second Name</th>
     <th>Phone</th>
     <th>Email</th>
     <th>Answer</th>
     <th>Comment</th>
 </tr>
  <?php foreach ($query as $row): ?> 
 <tr>

     <td><?php echo $row->name; ?></td>
     <td><?php echo $row->second_name; ?></td>
     <td><?php echo $row->phone; ?></td>
     <td><?php echo $row->email; ?></td>
      <td> <?php echo $row->answerA;?>
      <?php echo $row->answerB;?>
      <?php echo $row->answerC;?></td>
     <td><?php echo $row->comment;?><br></td>

 </tr>

  <?php endforeach; ?>

 </table>

控制器

function getall(){

    $this->load->model('result_model');
    $data['query'] = $this->result_model->result_getall();
    $this->load->view('result_view', $data);

    }

模型

function result_getall(){
  return $this->db->select('tblanswers.*,credentials.*')
                 ->from('tblanswers, credentials')
                 ->get()
                 ->result_object();

}

1 个答案:

答案 0 :(得分:4)

您正在从tblanswers,凭据中选择所有内容,而无需加入任何列。您最终会得到一个交叉连接,它将每一行与另一个表中的每一行配对。您需要指定tblanswers中哪些行与凭据中的哪些行相关。例如。如果凭证中有id列,则需要在tblanswers中创建credentials_id列并输入数据以使它们匹配。你的getall()应该是这样的:

function result_getall(){
  return $this->db->select('tblanswers.*,credentials.*')
                 ->from('tblanswers')
                 ->join('credentials', 'tblanswers.credentials_id = credentials.id')
                 ->get()
                 ->result_object();

}

的行
join('credentials', 'tblanswers.credentials_id = credentials.id')

指定两个表的关系。

假设琼斯先生输入了他的凭证,他们在身份证表中连续保存了一行,ID为72.然后他输入了答案。您需要确保在保存时,在答案表的credentials_id列中输入“72”。这表明这些答案属于琼斯先生。当您使用上面指定的联接运行查询时,它将返回琼斯先生的凭据以对抗琼斯先生的答案。