ThinkPHP的增、删、改、查

转载 2015年01月07日 11:36:40

今天学到了对ThinkPHP的增、删、改、查的一些操作,感觉写的挺清楚的,大家一起学习一下吧!

一、创建操作

在ThinkPHP使用add方法新增数据到数据库。

使用方法如下:

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

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

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

$User->add($data);

或者使用data方法连贯操作

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

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

使用create方法的例子:

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

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

$User->create();

$User->add(); // 根据条件保存修改的数据

如果你的主键是自动增长类型,并且如果插入数据成功的话,Add方法的返回值就是最新插入的主键值,可以直接获取。

 

 

二、读取数据

在ThinkPHP中读取数据的方式很多,通常分为读取数据和读取数据集。

读取数据集使用findall或者select方法(findall和select方法等效):

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

// status值为1的用户数据以创建时间排序返回10条数据

$list = $User->where('status=1')->order('create_time')->limit(10)->select();

select方法的返回值是一个二维数组,如果没有查询到任何结果的话,也是返回一个空的数组。配合上面提到的连贯操作方法可以完成复杂的数据查询。而最复杂的连贯方法应该是where方法的使用,因为这部分涉及的内容较多,我们会在查询语言部分就如何进行组装查询条件进行详细的使用说明。基本的查询暂时不涉及关联查询部分,而是统一采用关联模型来进行数据操作,这一部分请参考关联模型部分。

读取数据使用find方法:

读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。

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

// status值为1name值为think的用户数据

$User->where('status=1 AND name="think" ')->find();

即使满足条件的数据不止一条,find方法也只会返回第一条记录。

如果要读取某个字段的值,可以使用getField方法,例如:

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

// 获取ID3的用户的昵称

$nickname = $User->where('id=3')->getField('nickname');

当只有一个字段的时候,始终返回一个值。

如果传入多个字段的话,可以返回一个关联数组:

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

// 获取所有用户的ID和昵称列表

$list = $User->getField('id,nickname');

返回的list是一个数组,键名是用户的id, 键值是用户的昵称nickname。

 

三、更新数据

在ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。

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

// 要修改的数据对象属性赋值

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

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

$User->where('id=5')->save($data); // 根据条件保存修改的数据

为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。

因此下面的代码不会更数据库的任何记录

$User->save($data); 

除非使用下面的方式:

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

// 要修改的数据对象属性赋值

$data['id'] = 5;

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

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

$User->save($data); // 根据条件保存修改的数据

如果id是数据表的主键的话,系统自动会把主键的值作为更新条件来更新其他字段的值。

还有一种方法是通过create或者data方法创建要更新的数据对象,然后进行保存操作,这样save方法的参数可以不需要传入。

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

// 要修改的数据对象属性赋值

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

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

$User->where('id=5')->data($data)->save(); // 根据条件保存修改的数据

使用create方法的例子:

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

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

$User->create();

$User->save(); //根据条件保存要修改的数据

上面的情况,表单必须包含一个以主键为名称的隐藏域,才能完成保存操作。

如果只是更新个别字段的值,可以使用setField方法:

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

// 更改用户的name值

$User-> where('id=5')->setField('name','ThinkPHP');

setField方法支持同时更新多个字段,只需要传入数组即可,例如:

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

// 更改用户的nameemail的值

$User-> where('id=5')->setField(array('name','email'),array('ThinkPHP','ThinkPHP@gmail.com'));

而对于统计字段(通常指的是数字类型)的更新,系统还提供了setIncsetDec方法:

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

$User->setInc('score','id=5',3);// 用户的积分加3

$User->setInc('score','id=5'); // 用户的积分加1

$User->setDec('score','id=5',5);// 用户的积分减5

$User->setDec('score','id=5'); // 用户的积分减1

 

四、删除数据

在ThinkPHP使用delete方法删除数据库的记录。同样可以使用连贯操作进行删除操作。

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

$User->where('id=5')->delete(); // 删除id5的用户数据

$User->where('status=0')->delete(); // 删除所有状态为0的用户数据

delete方法可以用于删除单个或者多个数据,主要取决于删除条件,也就是where方法的参数,也可以用orderlimit方法来限制要删除的个数,例如:

// 删除所有状态为05个用户数据按照创建时间排序

$User->where('status=0')->order('create_time')->limit('5')->delete();



转载:http://blog.csdn.net/mengyun00/article/details/7788747

SQL 语法之“增”、“删”、“改”、“查”

/* 四、查 1.普通查询 语法:select from [where ] [order by [asc或desc]] */ /*    1).查询所有数据行和列     ...
  • Carvin_Zh
  • Carvin_Zh
  • 2015年07月29日 15:19
  • 1536

通用的增、删、改和查方法 DAO

// 通用的增、删、改的方法( version 2.0 )       public void update( String sql) {            // 1.获取数据库的连接   ...
  • u010834071
  • u010834071
  • 2014年09月07日 10:12
  • 875

tp框架增删改查

[php] view plain copy 在CODE上查看代码片派生到我的代码片 一些简单的增删改查语句 在CODE上查看代码片派生到我的代码片 ...
  • caozaifei
  • caozaifei
  • 2016年11月19日 09:13
  • 443

java封装JDBC操作数据库的方法:增、删、改、查

1.目录结构 2.需要依赖的jar mysql-connector-java-5.1.42-bin.jar  MySQL数据库驱动的jar包 3.首先是对数据库的操作 首先是连接数据库,操作完成后...
  • lykio_881210
  • lykio_881210
  • 2017年12月26日 09:34
  • 58

ThinkPHP的增、删、改、查

今天学到了对ThinkPHP的增、删、改、查的一些操作,感觉写的挺清楚的,大家一起学习一下吧! 一、创建操作 在ThinkPHP使用add方法新增数据到数据库。 使用方法如下: ...
  • u011978844
  • u011978844
  • 2013年12月03日 17:18
  • 574

增,删,改,查

var app = angular.module("yy", []); app.controller("democ1", function($scope){ $scope.stus = [{ g...
  • fuckyouarefuck
  • fuckyouarefuck
  • 2018年01月15日 09:06
  • 25

数据库的增、删、改、查操作-----(一)

数据库的增、删、改、查操作
  • Aimee09
  • Aimee09
  • 2016年09月13日 14:28
  • 648

增、删、改、查

public int doAdd(Reply reply) { String sql = "insert into reply values(null,?,?,?,?,?,?)"; return ...
  • qq_30604989
  • qq_30604989
  • 2016年08月04日 01:52
  • 43

Java连接数据库,实现“增、删、改、查”的基本操作

package com.imooc.db;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLE...
  • lvhao__sir
  • lvhao__sir
  • 2017年03月02日 22:59
  • 176

利用XML 增、删、改和查示例

       Oberons Legacy     Corets, Eva     5.95    1、往节点中插入一个节点:     XmlDocument xmlDoc=new XmlDoc...
  • hunluandiaoling
  • hunluandiaoling
  • 2008年12月16日 17:30
  • 139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThinkPHP的增、删、改、查
举报原因:
原因补充:

(最多只允许输入30个字)