PDO exec update

WBOY
WBOYOriginal
2016-06-23 14:25:591189browse

我使用pdo的exec update数据,得到影响行数
但有个问题,如果update的数据与原数据相同返回的是0
这样我就无法判断到底是同数据更新造成的还是没有更新到数据造成的
必须再用查询语句一遍进行确认
有没有更简单的解决办法?(前提是用pdo,php自带的方法好像是可以返回修改状态的)


回复讨论(解决方案)

查询一遍进行确认还不如直接更新

如果是更新失败,则会出错
所以你总是应该检查 PDO::errorCode 的返回值的

PDO::exec 返回 0 表示的是操作成功,但没有实际的动作

如果是更新失败,则会出错
所以你总是应该检查 PDO::errorCode 的返回值的

PDO::exec 返回 0 表示的是操作成功,但没有实际的动作

exec会返回三种状态,更新到数据会返回影响行数,没有更新数据会返回0,出错会返回false(必然更新数据库中没有的表)
前两种状态errorCode都返回的是00000,根本无法判断

把我的问题讲得更直白一些
`user`数据库
id   password
1     boy
update `user` set `password`='boy' where `id`='1';
exec返回0,errorCode返回00000
这样如果告诉直接用户设置失败肯定不是很好
我就必须select `password` from `user` where `id`='1';
如果password=='boy'设置成功,其他情况设置失败

呃!那么久都没人回答!!
自己想了个方法:在表中添加一个更新时间字段,每次update时都将其设为当时的时间
这样就可以区分更新表中没有记录时的返回和修改相同数据的返回都是0,从而需要进行查询验证的问题了
这是一个变通的方法,目前看来最简单

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn