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

[已解决] 请问高手,如何批量进行数据库插入啊

[复制链接]
发表于 2009-9-11 10:11:06 | 显示全部楼层 |阅读模式
看了好多例子,以及手册,但是都是介绍,单个记录进行插入的,但是如果要批量插入该怎么办啊!

insert into new_table(f1,f2,f3)
   select f1,f2,f3 from old_table;

现有的例子都是:
  $this->db->insert('new_table',$data);

各位大虾啊,救助啊
发表于 2009-9-11 10:12:41 | 显示全部楼层
循环执行 insert,貌似 mysql 本身没有批量插入功能吧。
 楼主| 发表于 2009-9-11 10:20:37 | 显示全部楼层
非常感谢 HEX 及时地回复。
 楼主| 发表于 2009-9-11 10:23:55 | 显示全部楼层
但是应该可以直接调用 SQL 语句吧,我可以在外面组织好 类似 insert into new_table(f1,f2,f3)
   select f1,f2,f3 from old_table;
的语句,只要 CI 能够正常调用,并返回执行结果就可以了啊?

还有 $this->db->insert('new_table',$data);
与 $this->db->update('new_table',$data);
是不是都没有返回结果啊?

如果对于有一个自动增量的字段的表,插入时可以不管,系统自动生成,如何得到刚刚新插入记录的自动增量的字段的值呢? 一般这个字段还都是唯一的标识字段的
 楼主| 发表于 2009-9-11 10:24:43 | 显示全部楼层
循环插入太麻烦了,先要从原来表中逐条查询出来,然后一个一个地插入,麻烦还效率低下的。
 楼主| 发表于 2009-9-11 10:51:53 | 显示全部楼层
怎么没有人说话了啊
发表于 2009-9-11 11:00:23 | 显示全部楼层
Acitive Record 没提供的功能你只能用 query 来做了,AR 没这么强大的功能。
 楼主| 发表于 2009-9-11 11:02:07 | 显示全部楼层
谢谢!我也好像看到了,想用这个尝试呢,谢谢啊!HEX
标准插入(insert)
$sql = "INSERT INTO mytable (title, name)
        VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";

$this->db->query($sql);

echo $this->db->affected_rows();
发表于 2009-9-11 12:23:02 | 显示全部楼层
               
$c = count($file);//计算多少个
               
                $i = 0;
                while ($i < $c):
               
                        $data = array(
                                'uid'=>$uid,
                                'photo'=>$file[$i]['file_name'],
                                'dateline'=>time()
                        );
                       
                        $this->db->insert('model_photos', $data);
                        $i++;
                       
                endwhile;



我是这样的 批量
 楼主| 发表于 2009-9-11 13:52:38 | 显示全部楼层


谢谢 hex
谢谢 wrz

本版积分规则