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
你给出的代码是同时修改 标题 和 内容,但事实上这种情况时极少出现的
内容和标题是分表的,以前用mysqli时似乎没有这样的问题。这次想用事务来处理存储修改两个表。
封装的$DB->Update()方法里当exec()返回0的时候,将被认为是修改失败,$DB->Update()返回的就是FALSE,否则返回的是影响条数。在处理单表的时候,这似乎没什么问题,因为数据表肯定要修改,但作为事务的时候,发现如果其中一表未被修改,也就是返回了0,我封装的方法会被认为是修改失败的,就会抛出异常导至回滚。是不是这种情况不该用事务?但是我觉得这个问题不解决,似乎以后还会是问题。肯定有要修改的数据与源数据偶尔出现相同的时候。
目前用笨方法可以解决,就是在内容表和标题表中都加个时间字段,每次存储的时候都会更新这个LastTime时间。也就解决了存储失败的问题,但不知在程序上是否有更好的方法。
加上修改时间是对的,符合业务流程
但是,只修改标题或只修改内容也是经常发生的
其实标题与内容并没有强联系(实际是用 id 建立联系的)
所以修改不需要使用事务,插入和删除才需要使用事务
加上修改时间是对的,符合业务流程
但是,只修改标题或只修改内容也是经常发生的
其实标题与内容并没有强联系(实际是用 id 建立联系的)
所以修改不需要使用事务,插入和删除才需要使用事务
谢谢,非常感谢。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Alipay PHP ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.
