sql >> Databáze >  >> RDS >> Mysql

PDO odmítá smazat řádek dat (v konkrétní tabulce)

PDO::exec() Funkce vrací počet ovlivněných řádků, včetně 0, pokud nejsou ovlivněny žádné řádky.

Řádek jako tento die() protože exec vrátí 0 což je interpretováno jako logická nepravda.

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

Nejlepší praxí zpracování chyb pro PDO je použití výjimek PDO. Povolte výjimky PDO (třídy PDOException, viz dokumenty) takto:

//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);

Odstraňte or die() a exit(); a povolit režim výjimky. Vsadím se, že to vyřeší váš "divný" problém. Podívejte se také na házení výjimek v PHP, dokonce i s procedurálním kódem (nahrazení die() a exit() .

BTW exit zastaví provádění stejně jako die , kromě toho, že je užitečný v režimu CLI, protože vrací do operačního systému kód úspěchu/chyby. Opravdu to není určeno pro zpracování chyb.




  1. Chyba:Metoda nebo operace není implementována. při lešení databáze MYSQL

  2. Hostingový balíček na Chocolatey

  3. MySQL a PHP - jak zobrazit všechny řádky, kde se hodnota pole rovná x?

  4. Odd IntegrityError na MySQL:#1452