`

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

阅读更多

【前言】

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

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

 

【主体】

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

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

 
技术分享
 
 
Tp中模型的底层是由pdo类封装而来的,所以继续查找pdo中的rowCount方法:
 
技术分享
 
 
原因找到了,因为数据没有变动,所以数据中影响的条数为零 ,返回值为 0,而 0 在php判断中又是false,所以就出现了上述的情况。当使用“===”判断时,由于判断了变量的类型,0 和 false就不相等了,问题解决。

 

 

 

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    thinkphp修改当前账号密码并带数据库与中间控制器

    ThinkPHP 3.2提供了Session机制,可以存储用户的登录状态,通过Session数据判断用户是否已登录。 3. **密码加密**:为了确保用户信息安全,密码通常不会以明文形式存储在数据库中,而是经过加密处理。ThinkPHP 3.2...

    ThinkPHP5快速入门 Word版本

    - **数据修改**:支持数据的插入、更新和删除操作。 **读取器与修改器** - **字段处理**:在数据读取和写入时进行预处理。 **类型转换与自动完成** - **字段类型转换**:自动转换字段类型,如日期时间。 - **数据...

    ThinkPHP3.0_完全开发

    - **虚拟模型**:不对应实际数据库表的模型,用于处理临时数据或计算结果。 #### 七、视图 - **模板定义**:创建和编辑视图模板,用于呈现数据和界面设计。 - **模板赋值**:将数据传递给模板,以便在视图中显示...

    ThinkPHP实现转换数据库查询结果数据到对应类型的方法

    在进行基于ThinkPHP框架的API开发时,经常需要将查询数据库返回的结果集中的字段数据转换为正确的数据类型。在ThinkPHP的3.x版本中,数据库查询返回的结果,默认所有字段值类型都是字符串类型(String)。这在Web...

    thinkphp5开发手册.zip

    10. **异常处理与错误日志**:阐述ThinkPHP5的异常处理机制,如何捕获和处理异常,以及如何配置错误日志,确保系统的稳定运行。 11. **安全机制**:介绍ThinkPHP5的安全特性,如防止SQL注入、XSS攻击,以及如何进行...

    ThinkPHP 开发手册

    模型和数据库模块是框架中处理数据的核心,包括模型的初始化、查询事件、事务操作监听、数据集的定义、新增、更新、删除、查询聚合以及获取器、修改器、时间戳等功能。ThinkPHP对数据库操作提供了强大的支持,包括...

    ThinkPHP5.0完全开发手册

    - **修改器**:修改数据时进行处理。 - **时间戳**:自动记录数据的创建时间和更新时间。 - **只读字段**:设置只读字段,防止被修改。 - **软删除**:模拟数据删除,实际不从数据库中删除。 - **类型转换**:自动...

    thinkphp3.0完全中文开发手册

    - **动态配置更改**:允许在运行时更改某些配置项的值。 **3.8 扩展配置** - **配置扩展**:可以在子类中扩展父类的配置。 #### 四、函数和类库 **4.1 函数库** - **核心函数**:如数据加密、字符串处理等。 - ...

    ThinkPHP提交表单时默认自动转义的解决方法

    例如,可以添加判断逻辑,当全局变量 `get_magic_quotes_gpc()` 返回 false 时,表示服务器没有开启magic quotes,那么就可以根据情况去除ThinkPHP的自动转义。 具体的代码修改可能是这样: ```php public ...

    thinkphp3.1 rbac

    // 无权限,跳转或返回错误信息 redirect('noPermission'); } else { // 有权限,继续执行操作 // ... } ``` 总结,ThinkPHP3.1的RBAC功能提供了强大的权限控制手段,使得开发者可以轻松实现复杂的应用场景下的...

    ThinkPHP5.0完全开发手册1

    【ThinkPHP5.0完全开发手册1】是针对ThinkPHP框架5.0版本的详尽指南,涵盖了从基础安装到高级特性的多个方面。以下是手册中的关键知识点: 1. **基础安装**:介绍如何安装ThinkPHP5.0,包括设置环境、下载框架、...

    thinkphp3.2离线文档

    - **数据更新**: 修改记录。 - **数据删除**: 删除记录。 - **ActiveRecord**: 提供一套操作数据库的标准API。 - **字段映射**: 映射数据库字段到模型属性。 - **查询语言**: - **查询方式**: 不同类型的查询。 ...

    ThinkPHP3.0_完全开发手册(1).pdf

    ThinkPHP3.0 支持 AJAX 请求的处理,并可以返回 JSON、XML 等格式的数据。 #### 六、模型 **6.1 模型定义** 模型用于处理数据相关的业务逻辑,通常对应于数据库中的表。 **6.2 模型实例化** 通过模型类的实例化...

    Thinkphp5框架异常处理操作实例分析

    例如,在数据校验过程中,如果数据不符合预期,则可以抛出一个带有具体错误信息的异常。 ThinkPHP5提供了统一的异常类think\Exception,开发者可以根据需要继承这个类,并在构造函数中设置自定义的错误信息和状态码...

    thinkphp框架实现删除和批量删除

    在使用ThinkPHP框架进行Web开发的过程中,数据的删除和批量删除是一项基础且重要的操作。ThinkPHP作为一个轻量级的PHP开发框架,其MVC(模型 Model、视图 View、控制器 Controller)的架构模式能够帮助开发者快速...

Global site tag (gtag.js) - Google Analytics