2013-03-05 103 views
2

我在codeigniter中使用连接函数并且无法让它工作它只显示一个表数据但不是其他新的codeigniter无法找出这个请求有人帮我提前tnx。在codeigniter中加入查询

视图

<?php foreach ($query as $row): ?> 

        <?php echo $row->answerA;?><br> 
       <?php echo $row->answerB;?><br> 
       <?php echo $row->answerC;?><br> 
        <?php echo $row->comment;?><br> 
        <?php echo $row->name; ?> 

     <?php endforeach; ?> 

控制器

function getall(){ 

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

     } 

模型

function result_getall(){ 

    $this->db->select('tblanswers.*,credentials.*'); 
    $this->db->from('tblanswers'); 
    $this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'right outer'); 
    $query = $this->db->get(); 
    return $query->result(); 

    } 

EDIT

这是

print_r($data['query']); 
     die(); 

阵列,它返回结果:

Array ([0] => stdClass Object ([answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 83 [name] => Edvinas [second_name] => liutvaits [phone] => [email] => [email protected]) [1] => stdClass Object ([answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 84 [name] => Edvinas [second_name] => liutvaits [phone] => [email] => [email protected]) [2] => stdClass Object ([answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 85 [name] => Edvinas [second_name] => Liutvaitis [phone] => [email] => [email protected]) [3] => stdClass Object ([answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 86 [name] => EdvinasQ [second_name] => LiutvaitisQ [phone] => 12345678 [email] => [email protected]) [4] => stdClass Object ([answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 87 [name] => Edvinas [second_name] => Liutvaitis [phone] => 123456 [email] => [email protected])) 

表结构

凭证

CID(PRIMARY),名称,秒ond_name,电话,电子邮件

tblanswers

answerid(主),用户ID,questionid,answerA,answerB,answerC。

+0

访问页面roytuts.com/codeigniter-join-example/ – user3470953 2016-05-28 03:41:42

回答

7

尝试这样的:

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid'); 

或者

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'inner'); 

并打印结果,看看是否是你想要

+0

他们都返回一个空数组任何其他建议? TNX为您提供帮助。 – 2013-03-05 07:59:47

0

什么如果您两台表都具有相关的,那么它应该管用。你为什么使用正确的外连接? 只需使用Inner Join或任何其他联接,它就可以工作。请阅读有关不同类型的加入这里http://www.w3schools.com/sql/sql_join.asp和这里http://dev.mysql.com/doc/refman/5.0/en/join.html

希望这会有所帮助。

谢谢

+0

内部连接返回一个空的数组,我离开了,我只是在玩连接选项,看看哪一个会为我工作。我尝试了所有的选项,我的东西我是那些是int用户指南,并没有一个返回两个表在同一时间其以太一个或另一个。 – 2013-03-05 08:02:25

+0

你可以添加数据库表的屏幕截图,所以我可以看到数据?如果所有连接都没有返回数据,那么显然问题将出现在数据排列或查询中。查询似乎很好,但仍不能说任何事情。请分享这两张表的屏幕截图,以便我可以看到两张表的数据。 – 2013-03-05 08:49:29

+0

我编辑的问题,并把表结构。 – 2013-03-05 08:58:01

1

选择删除()标签,为u需要的所有条件。

U可以修改像

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'outer'); 
$query = $this->db->get('tblanswers'); 
return $query->result(); 
+0

我试过yuor代码,我得到的是一个错误,这里是错误 发生数据库错误 错误号码:1064 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在'LEFT JOIN'凭证附近使用正确的语法'ON'tblanswers'.'answerid' ='credentials'.''' at line 2 SELECT * LEFT JOIN'文件名:C:\ wamp \ www \ Surva \ system \ database \ DB_driver.php 行号:330 – 2013-03-05 08:14:39

+0

已将您从'删除' ' 标签 ?它也需要被删除 – 2013-03-05 09:36:42

0

代码什么是你想要的主表查询?那么你可以试试这个,建议使用联接时,你必须为每个表指定别名:

function result_getall(){ 

    // if you want to query your primary data from the table 'tblanswers', 
    $this->db->select('a.*,b.*'); <-- select what you might want to select 
    $this->db->from('tblanswers a'); 
    $this->db->join('credentials b', 'b.cid = a.answerid', 'left'); 
    $query = $this->db->get(); 
    return $query->result(); 

    // if you want to query your primary data from the table 'credentials', 

    $this->db->select('a.*,b.*'); <-- select what you might want to select 
    $this->db->from('credentials a'); 
    $this->db->join('tblanswers b', 'b.answerid = a.cid', 'left'); 
    $query = $this->db->get(); 
    return $query->result(); 

}