欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

thinkphp 更新数据时如果未修改数据,返回结果判断异常

程序员文章站 2022-04-25 23:33:52
...
thinkphp 更新数据时如果未修改数据,返回结果判断错误
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驱动):

thinkphp 更新数据时如果未修改数据,返回结果判断异常


Tp中模型的底层是由pdo类封装而来的,所以继续查找pdo中的rowCount方法:

thinkphp 更新数据时如果未修改数据,返回结果判断异常


原因找到了,因为数据没有变动,所以数据中影响的条数为零 ,返回值为 0,而 0 在php判断中又是false,所以就出现了上述的情况。当使用“===”判断时,由于判断了变量的类型,0 和 false就不相等了,问题解决。
thinkphp 更新数据时如果未修改数据,返回结果判断异常

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • thinkphp 更新数据时如果未修改数据,返回结果判断异常
  • 专题推荐

    作者信息
    thinkphp 更新数据时如果未修改数据,返回结果判断异常

    认证0级讲师

    推荐视频教程
  • thinkphp 更新数据时如果未修改数据,返回结果判断异常javascript初级视频教程
  • thinkphp 更新数据时如果未修改数据,返回结果判断异常jquery 基础视频教程
  • 视频教程分类