CURD 操作 [2]

一、数据读取

在之前的课程中,我们已经大量使用了数据读取的功能,比如 select()方法。结合各
种连贯方法可以实现数据读取的不同要求,支持连贯的方法有:

1.where,查询或更新条件;
2.table,要操作的数据表名称;
3.alias,数据表别名;
4.field,查询字段;

5.order,结果排序;
6.group,查询分组;
7.having,分组再查询;
8.join,多表链接查询;
9.union,合并 SELECT;
10.distinct,取唯一值;

11.lock,锁;
12.cache,缓存;
13.relation,关联查询;
14.result,数据转换;
15.scope,命名范围;
16.bind,数据绑定操作;
17.comment,SQL 注释。

显示默认第一条数据

1 1 $user = M(‘User‘);
2 2 var_dump($user->find());  //可以传递数字参数,AR 模式

这时find()里面加哪一个数字,就会var_dump()出哪一条数据;(其实是找主键等于某个数值,如果主键不是数值或者

主键中该数值不存在的话,则没有数据)

显示默认所有数据

1 $user = M(‘User‘);
2 var_dump($user->select()); 

此时,select()括号内加上数字,也是只获取id为该数字的数据

获取第一条user字段的值

1 $user = M(‘User‘);
2 var_dump($user->getField(‘user‘));

获取所有user字段的值

1 $user = M(‘User‘);
2 var_dump($user->getField(‘user‘, true));

传递多个字段,获取所有

1 $user = M(‘User‘);
2 var_dump($user->getField(‘user,email‘));

id冒号分隔

1 $user = M(‘User‘);
2 var_dump($user->getField(‘id,user,email‘,‘:‘));

获得结果如图:

id与后面的数据之间隔了:符号;

限制2条数据

1 $user = M(‘User‘);
2 var_dump($user->getField(‘id,user,email‘,2));

二、数据更新

数据更新使用的方法是 save()方法,主要是对数据的修改操作。

修改第一条数据

1 $user = M(‘User‘);
2 $data[‘user‘] = ‘蜡笔大新‘;
3 $data[‘email‘] = ‘[email protected]‘;
4 $map[‘id‘] = 1;
5 $user->where($map)->save($data); //成功后返回 1,否则 0

如果数据成功存入数据库,这时用 echo $user->where($map)->save($data); 则会返回1,否则返回0;

默认主键为条件

1 $user = M(‘User‘);
2 $data[‘id‘] = 1;
3 $data[‘user‘] = ‘蜡笔小新‘;
4 $data[‘email‘] = ‘[email protected]‘;
5 $user->save($data);

这时,会自动识别数据库的主键,主键设置的为id,则,这时更新主键为1的内容;

数据更新的 save()方法支持的连贯方法有:

1.where,查询或更新条件;
2.table,要操作的数据表名称;
3.alias,数据表别名;
4.field,查询字段;
5.order,结果排序;

6.lock,锁;
7.relation,关联查询;
8.scope,命名范围;
9.bind,数据绑定操作;
10.comment,SQL 注释。

结合create()

这时,在首先在主目录下index.html(与index.php同级),插入以下代码

1 <meta charset="utf-8">
2 <form method="post" action="http://localhost/demo39/index.php/Home/User/save">
3   <p><input type=‘hidden‘ name=‘id‘ value=‘1‘ /></p>
4   <p>用户:<input type="text" name="user" /></p>
5   <p>邮箱:<input type="text" name="email" /></p>
6   <input type="submit" value="提交">
7 </form>

在  Home/controller/UserController.class.php  下插入以下代码:

1 $user = M(‘User‘);
2 $user->create();
3 $user->save();

解释一下在index.html内插入 <p><input type=‘hidden‘ name=‘id‘ value=‘1‘ /></p>  的意思

因为 Home/controller/UserController.class.php  使用的是 $user->create();  ,也就是所有

index.html里POST上来的内容的都在create()里,如果这里没有主键的话,那么数据就无法更新数据库了。

修改某一个值

1 $map[‘id‘]=1;
2 $data[‘user‘]=$_POST[‘user‘];
3 $user->where($map)->setField(‘user‘,$data[‘user‘]);

这时,是将POST过来的一条数据插入数据库,其实也可以把id放在html中,这样,post上来的数据就可以直接存储了

统计累计,累加累减

1 $user = M(‘User‘);
2 $map[‘id‘] = 1;
3 $user->where($map)->setInc(‘count‘,1); //累加,setDec 累减

这时我们在数据库新建一个名字叫count,如下图:

这时我们使用setInc函数后,count可以每次自动加一,count后面的数字是可以随便改的,(想到,这样其实可以在应用中设定,

当用户每次登录时,或者改变数据时,使conut加上某个数值的。就相当于是积分了)

三、数据删除

数据删除使用的方法是 delete()方法

直接删除主键(id=17)

1 $user = M(‘User‘);
2 $user->delete(17);

根据ID来删除

1 $user = M(‘User‘);
2 $map[‘id‘] = 16;
3 $user->where($map)->delete();

批量删除多个

1 $user = M(‘User‘);
2 $user->delete(‘1,3,5‘);

删除count为0且按时间倒序的前五个

1 $user = M(‘User‘);
2 $map[‘count‘] = 0;
3 $user->where($map)->order(array(‘date‘=>‘DESC‘))->limit(5)->delete();

删除所有数据,谨慎

1 $user = M(‘User‘);
2 $user->where(‘1‘)->delete();

这时如果  echo $user->where(‘1‘)->delete(); 则echo出的是删除数据的条数;where()括号里面只要是个数值就可以,不一定就是1;

delete()方法支持的连贯操作有:

1.where,查询或更新条件;
2.table,要操作的数据表名称;
3.alias,数据表别名;
4.order,结果排序;
5.lock,锁;

6.relation,关联查询;
7.scope,命名范围;
8.bind,数据绑定操作;
9.comment,SQL 注释。


四、ActiveReocrd 模式

这种模式最大的特别就是简化了 CURD 的操作,并且采用对象化的操作方式,便于使用
和理解。

添加一条数据

1 $user = M(‘User‘);
2 $user->user = ‘火影忍者‘;
3 $user->email = ‘[email protected]‘;
4 $user->date = date(‘Y-m-d H:i:s‘);
5 $user->add();

结合create

1 $user = M(‘User‘);
2 $user->create();
3 $user->date = date(‘Y-m-d H:i:s‘);
4 $user->add();

找到主键为4的值

1 $user = M(‘User‘);
2 var_dump($user->find(4));

查找user=蜡笔小新的记录

1 $user = M(‘User‘);
2 var_dump($user->getByUser(‘蜡笔小新‘));

输出user

1 echo $user->user;

通过主键查询多个

1 $user = M(‘User‘);
2 var_dump($user->select(‘1,2,3‘));

修改一条数据

1 $user = M(‘User‘);
2 $user->find(1);
3 $user->user = ‘蜡笔老新‘;
4 $user->save();

修改一条数据

1 $user = M(‘User‘);
2 $user->find(1);
3 $user->user = ‘蜡笔老新‘;
4 $user->save();

删除当前找到的数据

1 $user = M(‘User‘);
2 $user->find(11);
3 $user->delete();

删除主键为10的数据

1 $user = M(‘User‘);
2 $user->delete(10);

删除主键为10,11的数据

1 $user = M(‘User‘);
2 $user->delete(‘10,11‘);

注意delete()括号里的数字一定要加上单引号,如果不加单引号,则删除的时候只会删除前一个数字,而不是两个都删

五、字段映射

字段映射可以将表单里的 name 名称对应到数据表里的字段,这样防止系统自动屏蔽掉
不对应的 POST 值。

在index.html内的代码如下:

1 <meta charset="utf-8">
2 <form method="post" action="http://localhost/demo39/index.php/Home/User/save">
3   <p>用户:<input type="text" name="yonghu" /></p>
4   <p>邮箱:<input type="text" name="youxiang" /></p>
5   <input type="submit" value="提交">
6 </form>

注意三个地方,一是action提交的地方是 User/save ,而是用户和邮箱的name不是user和email了

这时,在 Home/Model/UserModel.class.php 内的代码如下:

 1 <?php
 2 namespace Home\Model;
 3 use Think\Model;
 4
 5 class UserModel extends Model {
 6     protected $_map = array(
 7         ‘yonghu‘=>‘user‘,  //这里是逗号
 8         ‘youxiang‘=>‘email‘,
 9         );  //这里要加分号
10 }

即把index.html中的name对应到数据表的名字,注意$_map后面的分号,这样在 Home/controller/UserController.class.php 便可直接使用以下代码:

1 public function save() {
2             $user = D(‘User‘);
3             $data=$user->create();
4             $map[‘id‘]=‘1‘;
5             $user->where($map)->save($data);
6 }

这时,即可更新id为1 的内容

时间: 2024-10-07 05:26:38

CURD 操作 [2]的相关文章

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

php对xml文件进行CURD操作

XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: - 表达:本身就可以作为阅读文档,当然还可以使用XSLT之类的进行解析和再显示. 缺点是schema验证复杂,相比后来的json等格式,相对冗余. 下面的是利用php对xml文件进行CURD操作: xml文件的格式为: 1 <?xml version="1.0" encoding=&

thinkphp对mysql的CURD操作

利用thinkphp(3.2.3)来操作数据库,首先要连接数据库.我们需要对某数据库写一个配置文件,thinkphp会根据该配置文件自动连接上数据库.而model文件就不用自定义,内置的即可解决问题.配置文件写于目录application\home\conf\config.php下: <?php return array( //'配置项'=>'配置值' 'DB_TYPE'=> 'mysql',//数据库类型 'DB_HOST'=> '127.0.0.1',//服务器地址 'DB_N

mongodb 学习笔记 02 -- CURD操作

mongodb 学习笔记 02 – CURD操作 CURD代表创建(Create).更新(Update).读取(Read)和删除(Delete)操作 创建库 直接 use 库名 然后创建collection 就可以创建库 创建collecion db.createCollection("collectionName") 隐式创建collection db.collectionName.insert({xxxxxx}) 删除collection db.collectionName.dro

MongoDB安装、CURD操作、使用场景分析总结(1)

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB有数据库.集合.文档三个基本概念分别相当于关系数据库中的数据库.表.行. 一.MongoDB安装 MongoDB官网下载地址:htt

ASP.NET Cookie概念、CURD操作、原理、实际运用

会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的. 就会话的应用来说,一般会话是用来识别用户的,比如你可以使用会话级变量记录当前用户已经输入的用户名密码,这样就不用他每次输入了,还可以用来记录一些其他的与当前这一次通话有关的信息.一旦你关闭了浏览 器,虽然会话没有结束,但是你重新打开浏览器时,已经不能再次利用上一次的会话了,它会新建一个会话.而服务器会根据预先的设置在超时后自动关闭会话,你也可以手动结束会话. 一.Cookie的基

dom4j解析XML的CURD操作

在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整个XML文件读到内容,形成一个倒状的树形结构. SAX是一个一个的将XML文件中的元素加载的内存,不会形成一个倒状的树形结构. 常用dom4j的api: 主要使用到SAXReader类 SAXReader:表示DOM4J解析器 saxReader.read():加载需要解析的xml文件,返回docu

EF 的 CURD 操作

EF 的 CURD 操作 这里采用了数据库 Northwind,下载地址:https://northwinddatabase.codeplex.com/ 增 1 /// <summary> 2 /// 添加 3 /// </summary> 4 /// <returns></returns> 5 public static int Add() 6 { 7 using (var db = new NorthwindEntities()) 8 { 9 var c

一个简单的ORM制作(CURD操作类)

SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行,返回Model集合. CURD类需要一个接口抽象出公共方法.便于修改和扩展,提供泛型接口.为了简单起见暂时未提供JOIN的实现,可以以数据库视图替代 public interface IDbOper<T> : IDisposable where T : new() { object Insert(

ThinkPHP CURD操作

ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建.更新.读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法.CURD操作通常是可以和连贯操作配合完成的.下面来分析下各自的用法: (下面的CURD操作我们均以M方法创建模型实例来说明,因为不涉及到具体的业务逻辑) 创建(Create) 在ThinkPHP中使用add方法新增数据到数据库(而并不是create方法). add  写入(新增)数据到数据库 用法 add($d