今天在维护后台的时候碰到一个很奇怪的问题
页面上的编辑功能
1、从列表中选择一行记录,点编辑
2、进入编辑页面,展示已有数据
此时,不改任何内容,点击保存,提示失败了!
我看了下sql,生成sql语句正常,就是执行的时候,mysql返回影响行数为0!
貌似在update的时候,如果sql里的字段内容不一样的话,mysql才会执行成功,一样的话,就提示影响行数为0,
这是神马情况,mysql会自己检查字段内容吗??可以说说为毛?
如果sql语句正确,返回的是影响的条数;如果sql语句错误,返回的是false。
没有更新任何数据,提示0行受到影响。这没错啊
所以在程序里判断要用===
来判断update返回的是false
还是0
,如果是false
才是更新失败!
当然,我说的是世界上最好的编程语言
update语句在执行的时候,如果数据没有发生改变,影响行数是为0,反之,则返回影响的行数。
程序写的有问题,如果你update的数据跟原纪录是一模一样的,没做修改,即使query执行成功了,但返回的还是0。所以在判断update是否成功的时候,应该是===false来判断,如果只是==就回出现这样的错
对的,只有更新的内容与与原内容不一致才会增加结果数量,所以这叫影响行数……