Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO weigert sich, eine Datenzeile zu löschen (in einer bestimmten Tabelle)

Das PDO::exec() Die Funktion gibt die Anzahl der betroffenen Zeilen zurück, einschließlich 0, wenn keine Zeilen betroffen sind.

Eine Zeile wie diese wird die() weil exec gibt 0 zurück was als boolescher Fehler interpretiert wird.

$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");

Die beste Fehlerbehandlungspraxis für PDO ist die Verwendung von PDO-Ausnahmen. Aktivieren Sie PDO-Ausnahmen (der PDOException-Klasse, siehe Dokumentation) wie folgt:

//enable Exception mode (uncaught exceptions work just like die() with the benefit of giving you details in logs of where execution was stopped and for what reason)
$pdoDBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Entferne or die() und exit(); und aktivieren Sie den Ausnahmemodus. Ich wette, das wird Ihr "seltsames" Problem beheben. Sehen Sie sich auch das Auslösen von Ausnahmen in PHP an, sogar mit prozeduralem Code (um die() zu ersetzen und exit() .

BTW exit stoppt die Ausführung genau wie die , außer dass es im CLI-Modus nützlich ist, da es einen Erfolgs-/Fehlercode an das Betriebssystem zurückgibt. Es ist wirklich nicht für die Fehlerbehandlung gedacht.