Trace信息无法显示,因为信息需要显示在body体内
1、创建数据
我们在php的action里面当然也可以使用$_POST以及$_GET获取变量,而TP提供了更加便捷的方法。Create方法创建的数据对象是保存在内存中,并没有实际写入到数据库中,直到使用add或者save方法才会真正写入数据库。比如我们提交了表单里面很多数据如果我们都用$_POST或者$_GET获取会把我们给搞疯掉的!而create会自动创建数据。我们直接用add或者save就可以保存到数据库(有人问,那数据库中的信息和提交的如何一一对应?)在进行add或者save操作的时候,数据表中不存在的字段以及非法的数据类型(例如对象、数组等非标量数据)是会自动过滤的,不用担心非数据表字段的写入导致SQL错误的问题。
所以,你提交的表单中需要设置name要和表中字段对应才能用create创建数据
(那岂不暴漏了表中字段信息?TP考虑到了,如果想隐藏字段信息可以看下面信息)
2、字段映射(官方解释)
ThinkPHP的字段映射功能可以让你在表单中隐藏真正的数据表字段,而不用担心放弃自动创建表单对象的功能,假设我们的User表里面有username和email字段,我们需要映射成另外的字段,定义方式如下:
Class UserModel extends Model{
protected $_map = array(
‘name’ =>’username’, //把表单中name映射到数据表的username字段
‘mail’ =>’email’, //把表单中的mail映射到数据表的email字段
);
}
这样,在表单里面就可以直接使用name和mail名称作为表单数据提交了。
同理可以显示的时候同样使用字段映射,这个时候需要用到处理方式是调用Model类的parseFieldsMap方法。$User = M(‘User’);
$data = $User->find(3);
这个时候取出的data数据包含的是实际的username和email字段,为了方便便表单输出,我们需要处理成字段映射显示在表单中,就需要使用下面的代码处理:
$data = $User->parseFieldsMap($data);这样一来,data数据中就包含了name和mail字段数据了,而不再有username和email字段数据了。
3、连贯操作
(具体内容参考手册,在后面使用到会做简单讲解)
4、CURD操作(具体详细内容参考手册)
ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建、更新、读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法。CURD操作通常是可以和连贯操作配合完成的。
一、创建操作(Create)
在ThinkPHP中使用add方法新增数据到数据库(而并不是create方法)。
add 写入(新增)数据到数据库 | |
---|---|
用法 | add($data=”,$options=array(),$replace=false) |
参数 | data(可选):要新增的数据,支持数组和对象,如果留空取当前数据对象options(可选):操作表达式,通常由连贯操作完成,默认为空数组 replace(可选):是否允许写入时更新,默认为false(个别数据库支持) |
回调接口 | 写入前 _before_insert(&$data,$options)写入成功 _after_insert($data,$options) |
返回值 | 如果数据非法或者查询错误则返回false如果是自增主键 则返回主键值,否则返回1 |
相关方法 | 通常和data、create方法配合使用 |
二、读取数据(Read)
在ThinkPHP中读取数据的方式很多,通常分为读取数据和读取数据集。
读取数据集使用select方法(新版已经废除原来的findall方法):读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。
三、更新数据(Update)
在ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。
四、删除数据(Delete)
在ThinkPHP中使用delete方法删除数据库中的记录。