Mysql
 sql >> Database >  >> RDS >> Mysql

PDO rifiuta di cancellare una riga di dati (nella tabella specifica)

Il PDO::exec() La funzione restituisce il numero di righe interessate, incluso 0 se nessuna riga è interessata.

Una riga come questa die() perché exec restituirà 0 che viene interpretato come booleano false.

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

La migliore pratica di gestione degli errori per PDO consiste nell'utilizzare le eccezioni PDO. Abilita le eccezioni PDO (della classe PDOException, vedi documenti) in questo modo:

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

Rimuovi or die() e exit(); e abilita la modalità eccezione. Scommetto che questo risolverà il tuo problema "strano". Dai anche un'occhiata al lancio di eccezioni in PHP, anche con codice procedurale (per sostituire die() e exit() .

A proposito di exit interrompe l'esecuzione proprio come die , tranne per il fatto che è utile in modalità CLI perché restituisce un codice di successo/errore al sistema operativo. In realtà non è pensato per la gestione degli errori.