CURD 操作 [1]
create创建新数据
首先在主目录下创建index.html,与index.php同级,插入以下代码
<meta charset="utf-8">
<form method="post" action="http://localhost/demo39/index.php/Home/User/create">
<p>用户:<input type="text" name="user" /></p>
<p>邮箱:<input type="text" name="email" /></p>
<p>生日:<input type="text" name="birthday" /></p>
<input type="submit" value="提交">
</form>
然后在 Home/controller/UserController.class.php 插入以下代码
<?php
// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;
use Think\Controller;
use Think\Model; class UserController extends Controller {
public function create() {
$user = M('User');
var_dump($user->create());
}
}
因为数据表的结构为:

所以当在index.php中点击发送后,var_dump()出的只有user和email的数据,
也就是说,在index.html中建立表单时,设定的name应该与数据表中的名字是对应的。
class UserController extends Controller {
public function create() {
$user = M('User');
$data['user']='小李';
$data['email']='xiaoli@qq.com';
$data['date']=date('Y-m-d H:i:s');
var_dump($user->create($data));
}
}
这时var_dump出的数据就是$data设定的数据
class UserController extends Controller {
public function create() {
$user = M('User');
$data = new \stdClass();
$data->user = $_POST['user'];
$data->email = $_POST['email'];
$data->date =date('Y-m-d H:i:s');
var_dump($user->create($data));
}
}
这时var_dump()的数据就是index.html提交过来的user和email的值,再加上date.
上面介绍的是POST 的方法,也就是index.html中的表单中的 method="post" ,如果改为 method="get" ,则
在 Home/controller/UserController.class.php 中的代码为
class UserController extends Controller {
public function create() {
$user = M('User');
var_dump($user->create($_GET));
}
}
也就是把create中的方式改为$_GET才能var_dump()出接收到的数据
create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSERT
和 Model::MODEL_UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包
含主键来自动判断,如果包含主键,则就是修改操作。
也就是
$user = M('User');
var_dump($user->create($_POST, Model:: MODEL_INSERT ));
create()方法的内部工作分为 9 步:
1.获取数据源(默认是 POST);
2.验证数据合法性(非数据或对象会过滤),失败则返回 false;
3.检查字段映射;
4.判断数据状态(新增还是修改);
5.数据自动验证,失败则返回 false;
6.表单令牌验证,失败则返回 false;
7.表单数据赋值(过滤非法字段和字符串处理);
8.数据自动完成;
9.生成数据对象(保存在内存)。
create()方法可以配合连贯操作配合数据创建,支持的连贯操作有:
1.field,用于定义合法的字段;
2.validate,用于数据自动验证;
3.auto,用于数据自动完成;
4.token,用于令牌验证。
限制可操作的字段
$user = M('User');
var_dump($user->field('user')->create());
这时只把收到的user的数据插入数据库
第二种方法是在 Home/Model/UserModel.class.php 里插入:
class UserModel s extends Model {
protected $insertFields = 'user';
protected $updateFields = 'user';
}
然后在 Home/controller/UserController.class.php 插入
$user = D('User');
var_dump($user->create($data));
注意,这里用的是D('User');
为什么要用D方法呢?因为将业务逻辑定义在了自定义的模型类里面(Lib/Model目录下),而想在操作中实现这些业务逻辑,则需要使用到D 方法
关于D和M的方法,可以查看 这篇文章
add数据写入
在 Home/controller/UserController.class.php 内插入以下代码
public function add() {
$user=M('user');
$data['user']='小李';
$data['email']='xiaoli@qq.com';
$data['date']=date('Y-m-d H:i:s');
$user->add($data);
}
结合create()方法
$user = M('User');
$data = $user->create();
$data['date'] = date('Y-m-d H:i:s');
$user->add($data);
此时在原先写的index.html里提交表单,提交的action应该为 http://localhost/demo39/index.php/Home/User/add
因为如果直接使用 $user->add(); 而不加上
$data = $user->create();
$data['date'] = date('Y-m-d H:i:s');
这时提交到数据库的数据就没有时间了,因为在提交表单的时候提交时间的数据。
add()方法支持的连贯操作有:
1.table,定义数据表名称;
2.data,指定要写入的数据对象;
3.field,定义要写入的字段;
4.relation,关联查询;
5.validate,数据自动验证;
6.auto,数据自动完成;
7.filter,数据过滤;
8.scope*,命名范围;
9.bind,数据绑定操作;
10.token,令牌验证;
11.comment,SQL 注释;
使用data连贯方法
$user = M('User');
$data = $user->create();
$data['date'] = date('Y-m-d H:i:s');
$user->data($data)->add();
data连贯方法 支持字符串、数组、对象
$user = M('User');
$data = 'user=星矢&mail=xinshi@qq.com&date='.date('Y-m-d H:i:s');
$user->data($data)->add();
CURD 操作 [1]的更多相关文章
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- LINQ-to-SQL那点事~利用反射在LINQ-to-SQL环境中实现Ado.net的CURD操作
回到目录 对于linq to sql提供的CURD操作,给我们的感觉就是简单,容易使用,更加面向对象,不用拼SQL语句了,这些好处都表示在处理单条实体或者集合长度小的情况下,如果有一个1000条的集合 ...
- Laravel框架数据库CURD操作、连贯操作
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...
- 一个简单的ORM制作(CURD操作类)
SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...
- Laravel框架数据库CURD操作、连贯操作总结
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 复制代码代码如下: $use ...
- dom4j解析XML的CURD操作
在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整 ...
- 一行代码实现FMDB的CURD操作
上次实现FMDB的CURD基本操作后,用在项目里,每个实体类都要写SQL语句来实现创建表和CURD操作,总觉得太麻烦,然后就想着利用反射和kvc来实现一个数据库操作的基类继承一下,子类只需要继承,然后 ...
随机推荐
- SVN中如何为文件夹中的所有文件加锁
经过一段时间的试用,发现不加锁的共享式开发还是不太方便.还是全部设置为独占式加锁,如有共享式修改需求再设置为不加锁比较好. 经过一番摸索,总结出如下的加锁方式是可行的: 注:第一步是必须的,必须完成第 ...
- cocos2d-html5 中的性能优化
游戏开发中,难免会遇到性能瓶颈.图片一多,渲染批次就会直线上升,任何动画都会变得闪动. OpenGL ES优化的问题,主要考虑两个方面:内存存储和运行速度. 2D游戏中的最占内存的就是图片资源,一张图 ...
- 51nod1680 区间求和
有n个数,给定一个k,求所有长度大于等于k的区间中前k大数的总和.这样就比较简单相信大家都会,所以此题要求当k=1~n的总和,即求 ∑nk=1∑n−k+1i=1∑nj=i+k−1 区间前K大和 In ...
- 程序员转项目管理之考证PMP
转行项目经历是IT人的出路之一,最近身边有好几个同事都在备考PMP,从个人未来职业发展来看,如果你有将来转行项目管理的想法,应该去尝试考一下PMP. PMP(Project Management Pr ...
- mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明
一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...
- flask之flask_bootstrap
由于flask_bootstrap最近没有更新,推荐使用bootstrap_flask #~/miniconda3/envs/lesson/lib/python3.6/site-packages/fl ...
- 用phpinfo( )打印出来的php版本和在服务器上用php -v打印出来的版本不同的原因
php -v 是linux系统的php版本,而phpinfo里显示的是WEB Server中配置的版本.说简单点,你的系统中有两个php版本. 如果您阅读过此文章有所收获,请为我顶一个,如果文章中有错 ...
- (转)基于PHP——简单的WSDL的创建(WSDL篇)
本文转载自:http://blog.csdn.net/rrr4578/article/details/24451943 1.建立WSDL文件 建立WSDL的工具很多,eclipse.zends ...
- [置顶]
linux getline()函数
getline()函数是什么?百度百科这样解释: getline不是C库函数,而是C++库函数.它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束.1) ...
- web页面导出到Excel乱码解决
引言: 前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的: HttpContext.Current.Respon ...