ThinkPHP中数据库操作返回值总结

转自:http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html

Thinkphp中的Think\Model类提供了数据库的基本CURD(Create、Update、Read及Delete),通过该类可以很便捷的进行操作。
Model类及扩展类主要的方法有:

  1. Create操作:
    create()(非链式) 、add()、addAll()
    支持的链式操作有:
    table 、data、field 、relation 、validate、auto 、filter、scope 、bind 、token 、comment
  2. Update操作
    save()、setField()、setInc()、setDec()
    支持的链式操作有:
    where、table 、alias、field、order、lock 、relation 、scope 、bind 、comment
  3. Read操作
    find()、select()、getField()、Count 、Max、Min 、Avg 、Sum
    支持的链式操作有:
    where 、table 、alias 、field 、order、group 、having 、join 、union 、distinct、lock、cache 、relation 、result 、scope 、bind 、comment
  4. Delete操作
    delete()
    支持的链式操作有:
    where 、table 、alias 、order、lock 、relation 、scope 、bind 、comment

这些方法的可能的返回值有false/true/一位数组/二维数组/numeric(数字)/null/类本身的实例,现在就总结如下:

1、链式操作:

所以链式操作都返回Model类的实例,即可以使用该返回值继续调用实例方法。

  1. $User=M("User");
  2. $U1=$User->$where("id = 1");//$U1可以继续调用其他方法。
  3. $result=$U1->select();
  4. //-------一般情况下没有必要这样,下面一句代码即可实现
  5. $result=M("User")->$where("id = 1")->select();

2、Create操作

  1. create 返回值:

    1. 若发生错误,返回false;
    2. 成功则返回创建的数据
      create为非链式操作,返回值为可能为布尔值,所以操作时要进行严格判断:
      1. $User = M("User");
      2. if($User->create()){
      3. //进行更多操作
      4. }
  2. add 返回值,addAll 返回值
    1. 成功:如果主键是自动增长型,返回值为新增记录Id值(addAll为最大值),否则返回true;
    2. 发生错误返回 false;

3、update操作

    • save 返回值(setField、setInc、setDec最后调用的都是save方法,所以返回值与save一致):
      save 返回值是影响的记录数(有可能为0),更新出错返回false,因此一定要用恒等来判断是否更新失败。

4、read操作

  1. find 返回值
    如果查询出错,find的返回值为false
    如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。
  2. select 返回值
    如果查询出错,select的返回值是false,
    如果查询结果为空,则返回NULL,否则返回二维数组。
  3. getField 返回值
    1. 如果查询出错,getField的返回值为false
    2. 查询成功:
      1. getField($field):$field为一个字段,返回数据库中该字段的第一行的值
      2. getField($field,true):$field为一个字段,返回包含该字段的一维数组
      3. getField($fields):$fields为两个字段(以“,”隔开),返回array($field1=>$field2)的数组;若$field为多个字段,返回类似select的多维数组,键名为field1。
      4. getField($fields,”:”):$field为多个字段,返回类似array($field1=>”$field2:$field3”)的数组
  4. Count 、Max、Min 、Avg 、Sum返回值
    如果查询出错,返回值为false
    查询成功,则返回对应的值

5、Delete操作

    • delete 返回值:成功则返回true,查询错误则返回false
时间: 2024-10-08 00:08:33

ThinkPHP中数据库操作返回值总结的相关文章

【转】ThinkPHP中数据库操作返回值总结

Thinkphp中的Think\Model类提供了数据库的基本CURD(Create.Update.Read及Delete),通过该类可以很便捷的进行操作.Model类及扩展类主要的方法有: Create操作:create()(非链式) .add().addAll()支持的链式操作有:table .data.field .relation .validate.auto .filter.scope .bind .token .comment Update操作save().setField().se

thinkphp对数据库操作有哪些内置函数

原文:thinkphp对数据库操作有哪些内置函数 getModelName() 获取当前Model的名称 getTableName() 获取当前Model的数据表名称 switchModel(type,vars=array()) 动态切换模型 table() 设置当前操作的数据表 field() 设置要查询的数据字段 where() 设置查询或者操作条件 data(data) 设置数据对象 order(order) 设置排序 limit(limit) 查询限制 page(page) 查询分页 j

MyBatis中Mapper的返回值类型

insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.delete语句的返回值可以是Integer.Long和Boolean.在定义Mapper接口时直接指定需要的类型即可,无需在对应的<insert><update><delete>标签中显示声明. 对应的代码在 org.apache.ibatis.binding.MapperMe

mybatis 中的 update 返回值

摘自:https://www.jianshu.com/p/80270b93082a 如果定义一个如下的update函数,那么这个函数的返回值到底是啥意思呢?是受影响的行数吗? 验证之前我们先看看数据库中的数据记录.总共两条数据记录! 数据库链接配置为: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.username=root jdbc.password=123456 下面看看我们的单

一篇博客分清shell中的状态返回值-return-break-continue-exit

一篇博客分清shell中的状态返回值-return-break-continue-exit 一.break.continue.exit.return的区别和对比 条件与循环控制及程序返回值命令知识表 命令 说明 break n 如果省略n,则表示跳出整个循环,n表示跳出循环的层数 continue n 如果省略n,则表示跳出本次循环,忽略本次循环剩余代码,进入循环的下一次循环.n表示退到第n层继续循环 exit n 表示退出当前shell程序,n为上一次程序执行的状态返回值,n也可以省略,在下一

c#中表达式的返回值是啥?

今天在学javascript的时候发现它其中有一个语法是这样的(a="haha).length;这样也能够输出haha这个字符串的长度,然而我在使用c#的时候分行读取txt文本的时候也用这个表达式,以前很好理解这样的用法,但是现在确实觉得这样的语法很奇怪,很别扭,于是就给自己找了一个理由来解释.解释的文字就不多说了,看下面这段代码吧. 看看一个表达式能够返回什么结果 string s ,s1; s=s1="haha";//这句代码将haha这个字符串同时赋值给了s和s1变量.

SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法

1.SpringMVC中通过@ResponseBody返回对象,作为JQuery中的ajax返回值 package com.kuman.cartoon.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.filefilter.FalseFileFilter; import org.slf4j.Logger; import org.s

自定义函数中的参数返回值 “-&gt; (Int -&gt; Int)”的问题

func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() println(increment(7)) 这里为什么要写两个 Int->Int 这里是返回值是参数,左边是参数,右边是返回值的意思. 自定义函数中的参数返回值 "-> (Int

loadrunner脚本中参数化和返回值输出log到外部文件

loadrunner脚本中参数化和返回值输出log到外部文件 很多时候,我们在做性能测试之前,需要造数据,但是使用的这些参数化数据和生成的返回数据在后面的测试都会用的,所以我们需要在造数据过程中,将参数化的数据和生成的返回数据保存起来,以便后续测试中使用!下面就以webservice协议的脚本为例,介绍下如何来实现所需的功能! int id,scid;char *group; //定义文件保存位置char *filename = "E:\\data\\test.log";long fi