PDO::exec()
hàm trả về số lượng hàng bị ảnh hưởng, bao gồm cả 0 nếu không có hàng nào bị ảnh hưởng.
Một dòng như thế này sẽ die()
bởi vì exec
sẽ trả về 0
được hiểu là boolean false.
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
Thực tiễn xử lý lỗi tốt nhất cho PDO là sử dụng các ngoại lệ PDO. Bật ngoại lệ PDO (của lớp PDOException, xem tài liệu) như sau:
//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);
Xóa or die()
và exit();
và bật chế độ ngoại lệ. Tôi cá rằng điều này sẽ khắc phục được vấn đề "kỳ lạ" của bạn. Ngoài ra, hãy xem cách ném Ngoại lệ trong PHP, ngay cả với mã thủ tục (để thay thế die()
và exit()
.
BTW exit
dừng thực thi giống như die
, ngoại trừ nó hữu ích trong chế độ CLI vì nó trả về mã thành công / lỗi cho hệ điều hành. Nó thực sự không dùng để xử lý lỗi.