THINKPHP数据库操作CURD操作的返回值

ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建、更新、读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法。CURD操作通常是可以和连贯操作配合完成的。很多学习使用THINKPHP的程序员都会熟悉和了解CURD的操作,但是你是否知道THINKPHP CURD操作数据库的返回值是什么吗?

一、创建操作(Create)

在ThinkPHP中使用add方法新增数据到数据库(而并不是create方法)。

引用示例如下:

$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方法的返回值就是最新插入的主键值,可以直接获取。

你是否注意到此了呢?也就是说,当主键id我们设置为自动增长类型,即当$result=$User->add()时,我们获取的$result值就是主键ID的值。

二、读取数据(Read)

这一方法好理解,因为在我们使用THINKPHP操作数据库的时候都在调用它的结果,它的返回值当然就是我们所需要的数据结果集。

三、更新数据(Update)

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

以下是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();?//?根据条件保存修改的数据

从这幅图片中片中我们看到save方法,当更新数据不成功时返回的是false,当成功执行此操作后,save方法的返回值是更新成功返回影响的记录数,我们也可以归结出THINKPHP更新数据库时,如何正确判断更新是否成功的正确方法。

四、删除数据(Delete)

在ThinkPHP中使用delete方法删除数据库中的记录。

用法 delete($options=array())
参数 options:为数组的时候表示操作表达式,通常由连贯操作完成,如果没有传入任何删除条件,则取当前数据对象的主键作为条件;为数字或者字符串的时候表示主键值。默认为空数组。
回调接口 删除成功后 _after_delete($data,$options)
返回值 如果查询错误返回false如果删除成功返回影响的记录数
相关方法 通常配合连贯操作where、field、order等一起使用

 

示例如下:

$User?=?M(“User”);?//?实例化User对象

$User->where(‘id=5’)->delete();?//?删除id为5的用户数据

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

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

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

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

由上表可知,当删除操作成功之后delete删除操作的返回结果是返回影响的记录数。

Copyright © All Rights Reserved · Proudly powered by WordPress 冀ICP备12019045号-1

css.php