PDO::exec()
funkcja zwraca liczbę dotkniętych wierszy, w tym 0, jeśli żaden wiersz nie jest dotknięty.
Linia taka jak ta spowoduje die()
ponieważ exec
zwróci 0
co jest interpretowane jako boolean false.
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
Najlepszą praktyką obsługi błędów dla PDO jest użycie wyjątków PDO. Włącz wyjątki PDO (klasy PDOException, patrz doc) w następujący sposób:
//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);
Usuń or die()
i exit();
i włącz tryb wyjątków. Założę się, że to rozwiąże twój „dziwny” problem. Spójrz także na rzucanie wyjątków w PHP, nawet z kodem proceduralnym (aby zastąpić die()
i exit()
.
BTW exit
zatrzymuje wykonywanie tak jak die
, z wyjątkiem tego, że jest użyteczny w trybie CLI, ponieważ zwraca kod sukcesu/błędu do systemu operacyjnego. To naprawdę nie jest przeznaczone do obsługi błędów.