zoukankan      html  css  js  c++  java
  • TP5更新数据成功,但判断结果不符

    thinkphp的CURD中,使用save方法时会出现一个奇怪的问题,即如果数据没有更新(与原数据相同),返回值判断为false。其实很久之前就发现了这个问题,一度以为是官方代码的问题,但是一直拖延到最近才想到要去解决这个问题。不得不说:“明日复明日,明日何其多。事事待明日,万事皆蹉跎。”,与君共勉!

    在官网上搜索了这个问题之后,发现官方已经解决了这个问题,原本的判断:
     
    $result = $Model->where('id=1')->save($data);
    if($result) {
        echo 'success';
    }else{
        echo 'false';
    }
    解决办法: 使用“===”判断返回值即可
     
    $result = $Model->where('id=1')->save($data);
    if($result !== false) {
        echo 'success';
    }else{
        echo 'false';
    }
    问题解决了,但是还是没有搞明白原因,于是又去看了一下save方法实现的源代码(3.2.3版本 mysql驱动):
     
    Tp中模型的底层是由pdo类封装而来的,所以继续查找pdo中的rowCount方法:
     
    原因找到了,因为数据没有变动,所以数据中影响的条数为零 ,返回值为 0,而 0 在php判断中又是false,所以就出现了上述的情况。当使用“===”判断时,由于判断了变量的类型,0 和 false就不相等了,问题解决。
     
  • 相关阅读:
    shell 脚本3 (输出与流程控制)
    centos 添加sudo 权限
    rz安装
    centos 安装mysql
    linux删除文件未释放
    关于字符串String的编程。
    spring mvc 学习指南二
    spring mvc 学习指南一
    《 spring mvc 》学习计划
    关于jsp的总结
  • 原文地址:https://www.cnblogs.com/init-007/p/11219047.html
Copyright © 2011-2022 走看看