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

[HELP] 如何关联查询、更新多张表内容?

[复制链接]
发表于 2011-5-9 09:50:03 | 显示全部楼层 |阅读模式
本帖最后由 onice 于 2011-5-9 09:53 编辑
PHP复制代码
 
function addsave(){
  $data1 = array(      //表 `categories`只需要更新parent_id字段
               'parent_id' => $this->input->post('pid')
         );
   $date2 = array(   //表 `categories_description`需要更新'categories_name' 和 'categories_description' 字段
 
    'categories_name' => $this->input->post('name'),
    'categories_description' => $this->input->post('description')
   );
  if(!empty($_POST['id'])){  //如果是添加,这样添加是否正确?
   $this->db->where('categories_id', $_POST['id']);  
   $this->db->update('categories', $data1);
   $this->db->update('categories_description', $data2);
  }else{ //如果是更新,我就不知道该怎么样同时更新到关联表的内容了
   $this->db->insert('categories', $data1);
   $this->db->insert('categories', $data2, 'categories_id=');
  }
  redirect('admin/category/index');
}
 
复制代码


问题都放在注释了,
主要就是categories 和categories_description 是两张关联表,
插入和更新都需要同时进行,
不知道还能不能使用mysql_insert_id() 这个函数来得到上一条语句返回的ID值
发表于 2011-5-9 10:04:40 | 显示全部楼层
本帖最后由 jeongee 于 2011-5-9 10:05 编辑

回复 onice 的帖子

很遗憾的告诉你,你的注释写倒了,
id的获取你可以使用$this->db->last_id();来获取
CI新手朋友切记一定到多看手册。
如果active record不好实现,别忘了,依然可以使用$this->db->query();来自己写sql语句运行,不必过于拘泥。
 楼主| 发表于 2011-5-9 10:08:42 | 显示全部楼层
回复 jeongee 的帖子

了解了,
谢谢
发表于 2011-5-9 10:35:59 | 显示全部楼层
不建议添加和update写在同一个方法里面
页面也是
 楼主| 发表于 2011-5-9 11:59:04 | 显示全部楼层
回复 zhouli520 的帖子

写在一个方法里面,但是model里面会加以判断的

本版积分规则