thinkphp 更新数据时如果未修改数据,返回结果判断错误_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > thinkphp 更新数据时如果未修改数据,返回结果判断错误

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

 2018/4/8 23:30:33  青春..荒唐  程序员俱乐部  我要评论(0)
  • 摘要:【前言】刚刚看到一个问题,编辑一个用户名和密码,现在不修改用户名只修改密码,因为用户名要进行唯一验证,此时这个用户名没有修改,unique就会提示用户名已经存在,这个问题大家是怎么解决的。这里我也困惑过,试过几种方法,不过效率太低。代码量多,推荐一种方法,还是用save去更新数据【主体】(1)在官网上搜索了这个问题之后,发现官方已经解决了这个问题,原本的判断:$result=$Model->where('id=1')->save($data);if($result)
  • 标签:PHP 结果 数据 错误

【前言】

? ? ? 刚刚看到一个问题,编辑一个用户名和密码,现在不修改用户名只修改密码,因为用户名要进行唯一验证,此时这个用户名没有修改,unique就会提示用户名已经存在,这个问题大家是怎么解决的。

? ? ?这里我也困惑过,试过几种方法,不过效率太低。代码量多,推荐一种方法,还是用save去更新数据

?

【主体】

? ?(1)在官网上搜索了这个问题之后,发现官方已经解决了这个问题,原本的判断:

class="php">$result = $Model->where('id=1')->save($data);
if($result) {
    echo 'success';
}else{
    echo 'false';
}

? (2)解决办法: 使用“===”判断返回值即可

$result = $Model->where('id=1')->save($data);
if($result !== false) {
    echo 'success';
}else{
    echo 'false';
}

?(3)问题解决了,但是还是没有搞明白原因,于是又去看了一下save方法实现的源代码(3.2.3版本 mysql驱动):

? 技术<a href=分享" src="/Upload/Images/2018040823/E29F403126DFEBC8.jpg" style="font-family: Arial, Helvetica, sans-serif; padding: 0px; max-width: 680px; overflow: hidden;"> ? ? Tp中模型的底层是由pdo类封装而来的,所以继续查找pdo中的rowCount方法: ? 技术分享 ? ? 原因找到了,因为数据没有变动,所以数据中影响的条数为零 ,返回值为 0,而 0 在php判断中又是false,所以就出现了上述的情况。当使用“===”判断时,由于判断了变量的类型,0 和 false就不相等了,问题解决。

?

?

?

?

?

?

?

?

?

?

?

?

.

上一篇: 创蓝253云通讯平台---短信验证码API接口 下一篇: 没有下一篇了!
发表评论
用户名: 匿名