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

各位大虾啊,救助啊

Hex 发表于 2009-9-11 10:12:41

循环执行 insert,貌似 mysql 本身没有批量插入功能吧。

eren888888 发表于 2009-9-11 10:20:37

非常感谢 HEX 及时地回复。

eren888888 发表于 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);
是不是都没有返回结果啊?

如果对于有一个自动增量的字段的表,插入时可以不管,系统自动生成,如何得到刚刚新插入记录的自动增量的字段的值呢? 一般这个字段还都是唯一的标识字段的

eren888888 发表于 2009-9-11 10:24:43

循环插入太麻烦了,先要从原来表中逐条查询出来,然后一个一个地插入,麻烦还效率低下的。

eren888888 发表于 2009-9-11 10:51:53

怎么没有人说话了啊

Hex 发表于 2009-9-11 11:00:23

Acitive Record 没提供的功能你只能用 query 来做了,AR 没这么强大的功能。

eren888888 发表于 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();

wrz 发表于 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;



我是这样的 批量

eren888888 发表于 2009-9-11 13:52:38

:victory:

谢谢 hex
谢谢 wrz
页: [1]
查看完整版本: 请问高手,如何批量进行数据库插入啊