关于thinkphp的save小错误
2015-07-21 12:09
549 查看
在使用tp框架时,如果不注意许多细小细节将会导致出错,比如数据更新的save方法,一不小心就会载了个大跟头。
在几个星期前,我一时兴起,用thinkphp随手写了个更新数据的表单,用于用户更新自己的数据以及资料,用的就是thinkphp的save更新方法,就像平常一样,写完之后,开始了测试,改数据,改数据,成功,都成功,就在我打算关掉编辑器的时候,随手,点了一下确定按钮(此时,我的页面是没有更改原始数据的),于是,非常悲催的,失败了,于是我认真检查了所有流程,但最后的结果是,我的流程没错,错的是判断是否更新成功的那一部分,因为,tp
框架的save方法,最后返回的并不只是true与false,而是影响的行数与false,没有true,有的人说,行数转换一下不就有true了吗?那么像我上面所做的那样,不改变原始数据,直接提交更新,那么影响的行数为0,转换之后岂不是false了,这算是更新失败吗?
因此,判断是否更新成功,应该使用恒等于或恒不等于来判断,而不只是单纯的判断是否为真,是否为假。
还有一个,为了避免出错更新了整个数据表的所有数据,若没有任何更新条件(where),或更新数据对象不包含主键字段的话,save不会更新任何数据库的记录。
在几个星期前,我一时兴起,用thinkphp随手写了个更新数据的表单,用于用户更新自己的数据以及资料,用的就是thinkphp的save更新方法,就像平常一样,写完之后,开始了测试,改数据,改数据,成功,都成功,就在我打算关掉编辑器的时候,随手,点了一下确定按钮(此时,我的页面是没有更改原始数据的),于是,非常悲催的,失败了,于是我认真检查了所有流程,但最后的结果是,我的流程没错,错的是判断是否更新成功的那一部分,因为,tp
框架的save方法,最后返回的并不只是true与false,而是影响的行数与false,没有true,有的人说,行数转换一下不就有true了吗?那么像我上面所做的那样,不改变原始数据,直接提交更新,那么影响的行数为0,转换之后岂不是false了,这算是更新失败吗?
因此,判断是否更新成功,应该使用恒等于或恒不等于来判断,而不只是单纯的判断是否为真,是否为假。
还有一个,为了避免出错更新了整个数据表的所有数据,若没有任何更新条件(where),或更新数据对象不包含主键字段的话,save不会更新任何数据库的记录。
相关文章推荐
- YII2 实现后台操作记录日志
- 在laravel之外使用eloquent
- IIS6.0运行ftp与.NET权限设置
- PHP中插件机制的一种实现方案
- yii2 发邮件 html 附件 文本等
- laravel5 model create使用
- YII2项目加入其它插件
- PHP实现好友生日邮件提醒
- PHP实现好友生日邮件提醒
- laravel database的事务函数
- laravel5 html引用问题
- datatable与php的ajax交互以及的语言国际化-设置
- php -- session会话
- php array_multisort 二维数组排序
- Php基础正则表达式篇
- PHP的基本语法(三)
- phpcms pc标签 模板函数应用
- php webservice实例
- laravel artisan 命令工具
- 一个基于QR Code encoder的 php 扩展,更高效的生成二维码