# 数据写入

[上一页](# "上一页")[下一页](# "下一页")

ThinkPHP的数据写入操作使用**add方法**,使用示例如下:

~~~

$User = M("User"); // 实例化User对象

$data['name'] = 'ThinkPHP';

$data['email'] = 'ThinkPHP@gmail.com';

$User->add($data);

~~~

或者使用data方法连贯操作

~~~

$User = M("User"); // 实例化User对象

$User->data($data)->add();

~~~

如果在add之前已经创建数据对象的话(例如使用了create或者data方法),add方法就不需要再传入数据了。使用create方法的例子:

~~~

$User = M("User"); // 实例化User对象

// 根据表单提交的POST数据创建数据对象

if($User->create()){

$result = $User->add(); // 写入数据到数据库

if($result){

// 如果主键是自动增长型 成功后返回值就是最新插入的值

$insertId = $result;

}

}

~~~

> create方法并不算是连贯操作,因为其返回值可能是布尔值,所以必须要进行严格判断。

### 支持的连贯操作

在执行add方法之前,我们可以调用相关的连贯操作方法,配合完成数据写入操作。

写入操作支持的连贯操作方法包括:

| 连贯操作 | 作用 | 支持的参数类型 |

|-----|-----|-----|

| table | 用于定义要操作的数据表名称 | 字符串和数组 |

| data | 用于指定要写入的数据对象 | 数组和对象 |

| field | 用于定义要写入的字段 | 字符串和数组 |

| relation | 用于关联查询(需要关联模型支持) | 字符串 |

| validate | 用于数据自动验证 | 数组 |

| auto | 用于数据自动完成 | 数组 |

| filter | 用于数据过滤 | 字符串 |

| scope | 用于命名范围 | 字符串、数组 |

| bind | 用于数据绑定操作 | 数组 |

| token | 用于令牌验证 | 布尔值 |

| comment | 用于SQL注释 | 字符串 |

##### 字段过滤

如果写入了数据表中不存在的字段数据,则会被直接过滤,例如:

~~~

$data['name'] = 'thinkphp';

$data['email'] = 'thinkphp@gmail.com';

$data['test'] = 'test';

$User = M('User');

$User->data($data)->add();

~~~

其中test字段是不存在的,所以写入数据的时候会自动过滤掉。

> 在3.2.2版本以上,如果开启调试模式的话,则会抛出异常,提示:`非法数据对象:[test=>test]`

如果在add方法之前调用field方法,则表示只允许写入指定的字段数据,其他非法字段将会被过滤,例如:

~~~

$data['name'] = 'thinkphp';

$data['email'] = 'thinkphp@gmail.com';

$data['test'] = 'test';

$User = M('User');

$User->field('name')->data($data)->add();

~~~

最终只有name字段的数据被允许写入,email和test字段直接被过滤了,哪怕email也是数据表中的合法字段。

##### 字段内容过滤

通过filter方法可以对数据的值进行过滤处理,例如:

~~~

$data['name'] = 'thinkphp';

$data['email'] = 'thinkphp@gmail.com';

$User = M('User');

$User->data($data)->filter('strip_tags')->add();

~~~

写入数据库的时候会把name字段的值转化为`thinkphp`。

> filter方法的参数是一个回调类型,支持函数或者闭包定义。

### Mysql的特殊操作

如果是mysql数据库的话,系统还提供了针对Mysql的操作方法,包括批量插入数据和替换操作,如:

~~~

// 批量添加数据

$dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com');

$dataList[] = array('name'=>'onethink','email'=>'onethink@gamil.com');

$User->addAll($dataList);

~~~

同时在数据插入时允许更新操作:

~~~

add($data='',$options=array(),$replace=false)

~~~

其中add方法增加$replace参数(是否添加数据时允许覆盖),true表示覆盖,默认为false

[上一页](# "上一页")[下一页](# "下一页")

mysql 数据写入文件格式_数据写入相关推荐

  1. 数据图表可视化_数据可视化如何选择正确的图表第1部分

    数据图表可视化 According to the World Economic Forum, the world produces 2.5 quintillion bytes of data ever ...

  2. mysql不能持久存储数据的是_数据持久化存储

    一数据持久化存储-csv文件 1.作用 将爬取的数据存放到本地的csv文件中 2.使用流程 1.导入模块2.打开csv文件3.初始化写入对象4.写入数据(参数为列表)importcsv with op ...

  3. mysql 执行计划 改变_数据量增加导致mysql执行计划改变解决_MySQL

    bitsCN.com 数据量增加导致mysql执行计划改变解决 收到运维同学电话,mysql服务器连接数满了,登录服务器查看,确实满了,好吧,首先增加连接数到2500,暂时提供对外服务.连接继续升高, ...

  4. mysql 数据割接_数据割接笔记

    --exprot date from oracle exp tbcy/123456@TestB1 file=OM_chetian.dmp log=20.log tables=chey indexes= ...

  5. 数据预处理工具_数据预处理

    数据预处理工具 As the title states this is the last project from Udacity Nanodegree. The goal of this proje ...

  6. 数据可视化工具_数据可视化

    数据可视化工具 Visualizations are a great way to show the story that data wants to tell. However, not all v ...

  7. 数据分析师入门_数据分析师入门基础指南

    数据分析师入门 Back in the summer of 2018, I was just starting my first internship as a Data Analyst. 早在201 ...

  8. 大数据平台蓝图_数据科学面试蓝图

    大数据平台蓝图 1.组织是关键 (1. Organisation is Key) I've interviewed at Google (and DeepMind), Uber, Facebook, ...

  9. etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别

    什么是数据同步工具(ETL.ELT) 数据同步工具ETL或者ELT的作用是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决 ...

  10. 数据透视表和数据交叉表_数据透视表的数据提取

    数据透视表和数据交叉表 Consider the data of healthcare drugs as provided in the excel sheet. The concept of piv ...

最新文章

  1. Postfix无法正常发送邮件故障的排除
  2. C语言库自带的二分查找函数bsearch函数的使用示例
  3. Spring 体系结构详解
  4. 解决burpsuite无法对DVWA环境(本地环境)进行抓包
  5. erp系统方案书_解决方案 |快普M8为系统集成企业定制的ERP系统
  6. python统计单词个数算法_统计一篇英文文章单词个数,取出出现频次前10的单词(Python实现)...
  7. gateway坑点:gateway有Controller时会直接处理对应的路径并返回
  8. [转载]基于Aaf的数据拆分
  9. 玩转SecureCRT 安装
  10. 【解题报告】SRM-08
  11. 气象数据源-要素、数据集、空间分辨率、网址
  12. 音视频开发系列(10):基于qt的音频推流
  13. SSRS 2012 高级图表类型 -- 圆饼图
  14. 最小和最大优先循环队列(C++)
  15. ssh 所选的用户密钥未在远程主机上注册
  16. 写点什么好呢2? 钱、事业、婚姻、人生意义
  17. 汽车的主要结构参数和性能参数
  18. 谷歌插件.crx文件无法安装
  19. 报考建行考计算机专业知识资料,建设银行信息技术类考试都考什么,有没有以前......
  20. Django实现用户管理

热门文章

  1. SmartFoxServer 2X 安装
  2. 【转载】深入浅出VA函数
  3. 关于 myeclipse 里面没有 add hibernate capabilities 问题解决方法
  4. java sleep()和wait()的区别
  5. SpringBoot 中 get/post 请求处理方式,以及requestboy为Json时的处理
  6. TCP/IP以及Socket对象基本
  7. samba、nginx服务
  8. 稀疏矩阵-sparse 存储和转换
  9. vertical-align属性
  10. 回不去原来是没有 实现这个 代理方法,