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 Waings: 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 Waings: 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的时候。
作者:piaomiao1314
来源链接:https://www.cnblogs.com/piaomiao1314/p/4123428.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。