Rumah > Artikel > pembangunan bahagian belakang > PDO->exec()修改数据时若数据未改变,将修改失败。
PDO->exec()修改数据时若数据未改变,将修改失败。返回是0,而我用改回的0来判断数据是否修改在功,但问题来了,当我用事务同处理多个表时,有的表会修改数据,而有的表则不会被修改。其中一个表的数据未被改动的话就会导至整个事务失败而执行抛出异常语句,导致回滚修改失败。有什么办法能解决这个问题?
try { $DB->BeginTransaction(); //事务开始 $updateNews=$DB->Update(DBI('Prefix').'news',$arrNews,'ID',$ID); if($updateNews!==FALSE){ echo '<br />新闻标题表修改成功。'; }else{ throw new PDOException('异常:新闻标题表修改失败。'); //抛出异常 } $updateConnent=$DB->Update(DBI('Prefix').'newsconnent',$arrConnent,'NewsID',$ID); if($updateConnent!==FALSE){ echo '<br />新闻内容表修改成功。'; }else{ throw new PDOException('异常:新闻内容表修改失败。'); //抛出异常 } $DB->Commit(); //成功,提交。 } catch (PDOException $e) { echo '编辑失败:'.$e->getMessage(); $DB->Rollback(); //失败,回滚 }
PDO::exec() 执行 update 时返回 0 的原因有:
1、不存在指定条件的记录
2、被修改字段的内容与待修改的内容相同
PDO::exec() 返回 false 的原因是:sql 指令时错误的
不知道你的 $DB->Update 是怎么写的,为什么会判断 $updateNews!==FALSE
你给出的代码是同时修改 标题 和 内容,但事实上这种情况时极少出现的
PDO::exec() 执行 update 时返回 0 的原因有:
1、不存在指定条件的记录
2、被修改字段的内容与待修改的内容相同
PDO::exec() 返回 false 的原因是:sql 指令时错误的
不知道你的 $DB->Update 是怎么写的,为什么会判断 $updateNews!==FALSE
你给出的代码是同时修改 标题 和 内容,但事实上这种情况时极少出现的
PDO::exec() 执行 update 时返回 0 的原因有:
1、不存在指定条件的记录
2、被修改字段的内容与待修改的内容相同
PDO::exec() 返回 false 的原因是:sql 指令时错误的
不知道你的 $DB->Update 是怎么写的,为什么会判断 $updateNews!==FALSE
你给出的代码是同时修改 标题 和 内容,但事实上这种情况时极少出现的
加上修改时间是对的,符合业务流程
但是,只修改标题或只修改内容也是经常发生的
其实标题与内容并没有强联系(实际是用 id 建立联系的)
所以修改不需要使用事务,插入和删除才需要使用事务
加上修改时间是对的,符合业务流程
但是,只修改标题或只修改内容也是经常发生的
其实标题与内容并没有强联系(实际是用 id 建立联系的)
所以修改不需要使用事务,插入和删除才需要使用事务