## insert() 方法 insert()方法大大简化了destoon系统的数据插入方式 insert(参数一,参数二),共两个参数: 参数一:插入的数据,数组类型,可以是一维或二维数组,必填参数 参数二:是否使用replace方式,非必填参数,使用参数二时,参数一只能传一维数组,参数二为布尔型值,可使用:0,1 或者 true,false #### 单表单条信息插入 向表中插入一条信息,传一维数组,key必须与数据库中字段对应,否则会报错。 示例 ``` $data = ['title'=>'www.dtmoban.com','username'=>'gaofei']; Db::table('test')->insert($data); ``` #### 单表多条信息插入 向表中插入多条信息,传二维数组,key必须与数据库中字段对应,否则会报错。 示例 ``` $data = [ ['title'=>'www.dtmoban.com','username'=>'gaofei'], ['title'=>'www.dtmoban.com','username'=>'gaofei2'], ['title'=>'www.dtmoban.com','username'=>'gaofei3'], ['title'=>'www.dtmoban.com','username'=>'gaofei4'] ]; Db::table('test')->insert($data); ``` #### replace方式插入数据 传第二个可选参数即可 示例: ``` $data = ['title'=>'www.dtmoban.com','username'=>'gaofei']; Db::table('test')->insert($data,true); ``` 注意:只能使用一维数组,单条插入。 ## content() 方法 这是一个辅助方法,可选。 用于向主表插入一条信息时,返回主表主健id,然后向主表关联的副表插入一条或多条信息,并且自带事务功能,如果副表插入失败,则删除主表信息。 这不是真正的事务,只是模拟的事务功能。 共四个参数: content(表名,关联字段,数据,范围,replace模式) replace模式时只能插入单条数据,并且关联字段得是副本的主健 示例: ``` //向主表插入一条数据,并且向副表插入一条 $data = ['title'=>'www.dtmoban.com','username'=>'gaofei']; $content_data['content'] = "fdddddd"; Db::table('test')->content('test_data','itemid',$content_data,'content',true)->insert($data); //向主表插入一条数据,并且同副表插入多条数据 //如果副表多插失败或者插入条数不符合,则撤回整个操作 $data['name'] = '小品02'; $data['number'] = 1002; $content_data[] = ['title'=>'5454545','price'=>'100']; $content_data[] = ['title'=>'5454545','price'=>'100']; $content_data[] = ['title'=>'5454545','price'=>'100']; $content_data[] = ['title'=>'5454545','price'=>'100']; $content_data[] = ['title'=>'5454545','price'=>'100']; $content_data[] = ['title'=>'5454545','price'=>'100']; Db::table('test')->content('test_product','tid',$content_data,'title,price')->insert($data); ``` ## field()方法 用来限制插入的字段,安全性更高,一般用于数据是前台提交过来的情况,防止恶意住表中关健字段插非法信息。 示例: ``` $data = [ ['name'=>'标题01','number'=>10], ['name'=>'标题02','number'=>11], ['name'=>'标题03','number'=>12], ['name'=>'标题04','number'=>13], ['name'=>'标题05','number'=>14] ]; //单表批量插入,不支持副表同插 Db::table('test')->field('name,number')->insert($data); ``` 除了 name和number字段外,如果$data中还有其它字段就会被自动过忽略掉。 ## isertAll()方法 用于向数据库同时插入多条信息,和insert()方法传二维数组时效果是一样的。 示例: ``` $data = [ ['name'=>'标题01','number'=>10], ['name'=>'标题02','number'=>11], ['name'=>'标题03','number'=>12], ['name'=>'标题04','number'=>13], ['name'=>'标题05','number'=>14] ]; //单表批量插入,不支持副表同插 Db::table('test')->field('name,number')->insertAll($data); ``` ## debug() 方法 用于打印插入sql语句,多条数据插入时,只会返回第一条数据的sql