heiniu 发表于 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的判断返回错误。。。

heiniu 发表于 2009-10-23 13:51:20

在view里直接写$q2 = $this->db->get('table2');倒是可以。但是视图里写数据库操作感觉怪怪的,不知道如果想在function里应该怎么实现。

Hex 发表于 2009-10-23 13:54:45

$this->db->get('table1');
这个返回的不是最终的记录集,请仔细看手册。
http://codeigniter.org.cn/user_guide/database/results.html

heiniu 发表于 2009-10-23 14:00:08

我不是说他不能做,而是怎么在funtion里调用后将多个记录集传到view中。。。

Hex 发表于 2009-10-23 14:02:24

调用两次下面的代码
$query = $this->db->query("要执行的 SQL");

foreach ($query->result() as $row)
{
   echo $row->title;
   echo $row->name;
   echo $row->body;
}

heiniu 发表于 2009-10-23 15:54:19

貌似一个页面只传了一回参数。。。你还是没明白我的问题。。。
$this->load->view('main_view',$data);

heiniu 发表于 2009-10-23 16:00:33

看来一个funtion里调用的数组,如果是多个只能对应传给多个view,然后将其组合起来。。。一个view可以调用另一个view,我脑子僵化了,把它看得太美,以为一个view就把我傻瓜化了,哈哈。。。
直接在view中操作数据库不是不可以,不科学。。。

lihao812 发表于 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');

Hex 发表于 2009-10-23 17:30:33

$this->load->view('main_view',$data);
你是说只能传一个 $data 变量到视图里?确实是只能传一个,但是 $data 是个数组,可以传递任意多个元素,然后视图会自动解析这些元素,并转换成变量。

visvoy 发表于 2009-10-23 18:57:03

请帖代码和错误信息
页: [1] 2
查看完整版本: 如何进行多表查询呢?