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驱动):

技术分享

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

你可能感兴趣的:(thinkphp 更新数据时如果未修改数据,返回结果判断错误的解决办法)