thinkPHP中使用save方法来更新数据的
save方法的正常执行时返回值是影响的记录数,出错时返回false,返回为0和返回false在很多业务场景下都是不同的。

而当修改的内容和原有内容一致的时候返回的也就是0,通常在修改内容的表单中不进行任何修改点击修改按钮就是这种情况。
0和false是不同的,尽管作为布尔型时都代表假。0代表的是修改未修改而没有执行错误,false代表执行的时候发生了错误。
所以在判断是否修改成功时不能使用if(....->...->save())作为判断的条件,而应该使用if(....->...->save()!==false)作为判断更新执行与否的条件,同时判断值和类型是否和false匹配。

下面在mysql命令行中举个例子:

新建个表:

mysql> create table t(id int);
Query OK, 0 rows affected (0.85 sec)

插入条数据:

mysql> insert into t(id)values(2);
Query OK, 1 row affected (0.24 sec)

进行一条不改变数据的更新语句:

mysql> update t set id=2 where id=2;
Query OK, 0 rows affected (0.13 sec)
Rows matched: 1 Changed: 0 Warnings: 0

可以注意到Changed为0,说明并未修改内容。更新语句是正常执行的,这就对应着save()返回0的时候。

执行一条改变数据的更新语句:

mysql> update t set id=3 where id=2;
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Changed为1,说明这条更新语句修改了内容。对应着save()>0的时候。

再来执行一条错误的更新语句:

mysql> update t set id=2 where ida=3;
ERROR 1054 (42S22): Unknown column 'ida' in 'where clause'

发生错误,对应save()为false的时候。

thinkPHP判断是否修改成功的更多相关文章

  1. thinkphp判断更新是否成功

    如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model ...

  2. ThinkPHP判断更新是否成功的正确方法

    如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model ...

  3. 第8课 Thinkphp 5 update判断修改成功与失败 Thinkphp5商城第四季

    没有修改数据时,判断修改成功与失败 如果提交时的数据库里之前的数据一样(即没有修改就提交表单),会返回0,此时 判断修改成功用$save !== false 这样才会提示修改成功. $save=db( ...

  4. socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto

    socket异步通信-如何设置成非阻塞模式.非阻塞模式下判断connect成功(失败).判断recv/recvfrom成功(失败).判断send/sendto 博客分类: Linux Socket s ...

  5. Thinkphp 数据的修改及删除操作

    一.数据修改操作 save()  实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式: a)         $goods = D(“Goods ...

  6. ASPxGridView删除、添加、修改成功后,弹出提示对话框的方法

    分为几步: 1.在aspx文件中添加 function EndCallBack(s, e) {    if (s.cpAlertMsg != "" && s.cpA ...

  7. jsp中提示修改成功

    修改成功提示 servert包 request.setAttribute("success", "修改失败"); 效果而 function f(){ var n ...

  8. Delphi连接sql数据库怎么判断连接是否成功呢

    一切属性都设置好后,我在Button里 ADOConnection1.Connected := True;这样连的,之后如何判断是否连接成功了呢?查询一下数据试试?有更直接的办法吗? -------- ...

  9. Vue 修改成功之后我做了什么

    Vue 修改成功之后我做了什么 背景:前端将修改的数据传递到后端,后端返回成功之后,我们要将数据及时显示出来. 霸道方法一:重新请求接口 柔和方法二:修改成功之后的数据传递到源数据中,进行双向绑定显示 ...

随机推荐

  1. 改变shape solid color

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  2. vue-router 实现分析

    我们分别从不同的视角来看 vue-router. http://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247485737&idx ...

  3. Github学生包的申请

    Github Education为了大学生们更好的进行开发,进行边做边学,与一些合作伙伴和朋友一起创建GitHub学生开发者包. 里面内容非常丰富,应有尽有: AWS 亚马逊云服务 $75-$150  ...

  4. 【例题收藏】◇例题·IV◇ Wooden Sticks

    ◇例题·IV◇ Wooden Sticks 借鉴了一下 Candy? 大佬的思路 +传送门+ (=^-ω-^=) 来源:+POJ 1065+ ◆ 题目大意 有n个木棍以及一台处理木棍的机器.第i个木棍 ...

  5. 【软件笔记】 ◆笔记·I◆ 各类冷门函数细解

    [软件笔记·I] 各类冷门函数细解 ■题外话■ 总觉得作为一个志向远大的 coder (٩(◕‿◕。)۶),我觉得单单只会做题是不够的所以我开始尝试自己编写软件!初入道的我并不知道C++其实并不太适合 ...

  6. oracle之bitmap索引

    oracle常见的索引是BTree索引和Bitmap索引. BTree索引特点: 默认索引 适合大量增删改查 不能用or操作符 适合高基数的列(即唯一值多) 创建sql:create index li ...

  7. 生产者消费者-Java代码实现

    import java.util.LinkedList; class Storage{ private static final int MAX = 100; LinkedList<Object ...

  8. Oracle创建表空间,添加用户及授权

    工具/原料 PLSQL 方法/步骤 1.在PLSQL里,用system/css(orcl系统用户)登陆,登陆的时候普通用户登陆选择normal就可以了   2.Oracle用户新增 执行语句 crea ...

  9. php - empty() is_null() isset()的区别

    empty():当变量存在,并且是一个非空非零的值时,返回 FALSE,否则返回 TRUE. is_null():如果指定变量为 NULL,则返回 TRUE,否则返回 FALSE. isset():如 ...

  10. DrawGrid 做图片显示 代码简单 参考性强 (Delphi7)

      运行效果图 源码 http://files.cnblogs.com/lwm8246/DrawGrid_demo.rar   procedure TfrmMain.GridDrawCell(Send ...