zoukankan      html  css  js  c++  java
  • thinkPHP判断是否修改成功

    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的时候。

  • 相关阅读:
    HDOJ-3635-Dragon Balls 解题报告
    HDOJ-1217-Arbitrage 解题报告
    C语言控制台窗口图形界面编程(总结)
    PC(win10)上搭建 kubernetes + docker 集群环境
    Hessian 2.0 序列化协议
    对响应式布局的理解
    常用链接集合
    dubbox升级dubbo的过渡方案:通过扩展dubbo的Protocol实现dubbo与dubbox的相互调用
    Wordpress部署 —— 基于Ubuntu、Mysql和Nginx
    关于27种常见设计模式的总结
  • 原文地址:https://www.cnblogs.com/piaomiao1314/p/4123428.html
Copyright © 2011-2022 走看看