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

时间: 2024-11-01 13:11:50

thinkPHP判断是否修改成功的相关文章

thinkphp判断更新是否成功

如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model->save($data); if ( false !== $result ){ $this->success('更新成功!'); }else{ $this->error('更新失败!'); } 需要用 !== false 来判断更新是否成功,因为save方法返回值是更新操作影响的记录数,有

jsp中提示修改成功

修改成功提示 servert包 request.setAttribute("success", "修改失败"); jsp页面中 <p style="color:red;">${success==null?'':success }</p> 效果图

ThinkPHP 判断一个更新操作是否成功

需要用 !== false 来判断更新是否成功,因为save方法返回值是更新操作影响的记录数,有可能影响的记录数为0,但却更新成功的. $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model->save($data); if ( false !== $result ){ $this->success('更新成功!'); }else{ $this->error('更新失败!'

ThinkPHP判断是否登录

在开发WEB后台时,在每个页面都需要判断当前是否处于登录状态.通常情况下会判断是否存在指定的SESSION,如果存在则认为是已经登录,如果不存在则认为没有登录,那么需要跳转到登录页面. 如果在每个页面中都写一段判断是否登录的代码,那么就非常的繁琐了.但是如果使用面向对象的继承特性,那么实现起来就非常的容易了.下面是使用ThinkPHP来简单实现一个判断是否登录的例子. 首先,写一个控制器,代码如下: <?php namespace Home\Controller; use Think\Contr

动态参数与静态参数的判断、修改

视图 v$parameter 中 ISSYS_MODIFIABLE 列能够查看参数属性,ISSYS_MODIFIABLE ='IMMEDIATE'为动态参数. ISSYS_MODIFIABLE ='FALSE' 为静态参数 . ISSYS_MODIFIABLE ='DERERRED' 为延迟参数(当前会话不生效,后续的会话有效) . 1. 参数总数:SQL> select count(*) from v$system_parameter where issys_modifiable='IMMED

【BUG】---ng-show/ng-hide修改成功但没有效果

问题:点击搜索,隐藏tab,出现搜索结果列表,调试也成功修改了分别元素的ng-hide就是没有效果 我的错误: <div ng-hide="{{isShow}}" class="list-div">加了双花括号(⊙o⊙)… 解决: <div ng-hide="isShow" class="list-div">去掉就可以了 总结: 问题虽然不大,但是对于我这个菜鸟来说卡了半天啊,希望跟我犯一样错误的细心点

thinkphp判断是否为手机

一.问题: 近日准备给自己的网站做一个小升级,让用户在手机二维码扫描的时候显示适合手机端来展示的模版[我用的是ThinkPHP3.0],代码是参考别人的 二.实现方法: 这里先说下大概的一个思路 简单两步: 统版本号和浏览器以及它的版本号(贴出的代码中数组中只有移动端信息,因此后面只需判断是否为数组中的某一个值即可). 根据数组中的值来判断访客是否为手机.pad.之类的移动端,如果是的话就规定项目路径.名称为你的手机端模版如 复制代码 代码如下: define('APP_NAME','mobi'

微信支付----PC扫码支付(查询微信支付订单判断是否支付成功)

c#webapi建议前端轮番查询订单状态     #region  查询扫码订单状态         /// <summary>         /// 查询扫码支付状态         /// </summary>         /// <param name="out_trade_no">支付订单号</param>         /// <returns></returns>         [HttpGe

DSOFramer 控件修改成功

1.Html电子印章.手写签名系统演示:http://www.dianju.com.cn/video.htm 在线试用: http://www.dianju.com.cn/websignpiaoju/ http://www.dianju.com.cn/websigndemo/ 2.Word.Excel 电子印章,手写签名系统:  演示版:http://www.dianju.com.cn/video.htm下载:http://www.dianju.com.cn/downloads/des/DES_