用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6668|回复: 11
收起左侧

[已解决] 如何进行多表查询呢?

[复制链接]
发表于 2009-10-23 13:44:01 | 显示全部楼层 |阅读模式
假如在一个视图页面里,想分别对多个表进行查询,那么该怎么写呢?
如果这样在controller的funtion里写
        $data['q1']=$this->db->get('table1');
        $data['q2']=$this->db->get('table2');
        $this->load->view('view',$data);
试了一下,好像只能取到$q1,而$q2则取不到,$q2->num_rows()>0的判断返回错误。。。
 楼主| 发表于 2009-10-23 13:51:20 | 显示全部楼层
在view里直接写$q2 = $this->db->get('table2');倒是可以。但是视图里写数据库操作感觉怪怪的,不知道如果想在function里应该怎么实现。
发表于 2009-10-23 13:54:45 | 显示全部楼层
$this->db->get('table1');
这个返回的不是最终的记录集,请仔细看手册。
http://codeigniter.org.cn/user_guide/database/results.html
 楼主| 发表于 2009-10-23 14:00:08 | 显示全部楼层
我不是说他不能做,而是怎么在funtion里调用后将多个记录集传到view中。。。
发表于 2009-10-23 14:02:24 | 显示全部楼层
调用两次下面的代码
PHP复制代码
$query = $this->db->query("要执行的 SQL");
 
foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}
复制代码
 楼主| 发表于 2009-10-23 15:54:19 | 显示全部楼层
貌似一个页面只传了一回参数。。。你还是没明白我的问题。。。
$this->load->view('main_view',$data);
 楼主| 发表于 2009-10-23 16:00:33 | 显示全部楼层
看来一个funtion里调用的数组,如果是多个只能对应传给多个view,然后将其组合起来。。。一个view可以调用另一个view,我脑子僵化了,把它看得太美,以为一个view就把我傻瓜化了,哈哈。。。
直接在view中操作数据库不是不可以,不科学。。。
发表于 2009-10-23 16:02:44 | 显示全部楼层
给你贴个我的多表查询...

$data['classes'] = $this->db->get_where('CCA_STAFFSKILL A,CCA_BUSINESS B','A.STATE = 0 AND A.OPRNO = '.$this->session->userdata('WorkNum').' AND B.ID = A.SKILLID AND B.B_FID = 0 ORDER BY B.B_SORT ASC');
发表于 2009-10-23 17:30:33 | 显示全部楼层
$this->load->view('main_view',$data);
你是说只能传一个 $data 变量到视图里?确实是只能传一个,但是 $data 是个数组,可以传递任意多个元素,然后视图会自动解析这些元素,并转换成变量。
发表于 2009-10-23 18:57:03 | 显示全部楼层
请帖代码和错误信息

本版积分规则