Epic Moments 01(判断数据更新是否成功)

    Q:没有对信息进行修改为什么会提示修改失败呢?

Problem Description:使用ThinkPHP框架(ver3.2.5)进行修改信息模块的开发时,使用ajax将多组数据使存在FormData里面,从后台通过$_POST方法传入控制器。控制器中使用$data数组将传进来的数据信息进行保存。最后使用M()方法将数据库中的表来实例化,最后通过save()方法将数据更新。判断条件如下:

if($download_table->where('id='.$id)->save($data))
            echo "修改成功!";
        else
            echo "修改失败!";

注:$download_table是M(‘数据表的名字’),$id是ajax拿过来的。

    在对这段代码进行测试的时候发现,如果不对信息进行修改,就会返回“修改失败!”。在控制器的类文件中使用var_dump()方法、在引用的外部JQ中使用console.log对“提交修改”这一瞬间的所有信息进行抓取以后发现所有数据都在,并没有出现数据丢失的情况。那为什么会修改失败呢?

    A:跑到论坛去发现是由于判断条件不对造成的。save()方法返回的值是数据表中受影响的行数,在不对信息进行修改的时候,save()方法的返回值为0,即没有行受到影响。if(0)即为修改失败。当返回false的时候是数据更新失败!

   Solution:采用严格比较的方式,0和false不严格相等,就会返回“修改成功!”。代码如下:

if(false !==$download_table->where('id='.$id)->save($data))
            echo "修改成功!";
        else
            echo "修改失败!";

还有一种方式就是在数据库中添加一个保存时间戳的栏位,每次更新时更新时间戳,便可以采用问题中的判断条件了。(时间戳会一直改变,返回值至少为1).

    Epic Moment:学习CURD方法时千万要记清楚方法的返回值。

C:add()方法,返回值为新增的id号。

U:save($data);方法,返回值为受影响行数。

R:select()方法,以数组形式返回为所有数据。

D:delete()方法,返回值为受影响行数。

 

 

 

关于:这个专题是记录那些开发时百思不得解但是最后茅塞顿开的问题。这种醍醐灌顶的感觉对我来说即为Epic Moments。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值