Theo tôi hiểu, bạn mong đợi rằng PDOException sẽ được ném khi câu lệnh không thực thi được. Nhưng như tôi thấy, ngoại lệ không được ném theo mặc định trong những trường hợp như vậy. Hãy xem cách bạn có thể thay đổi điều đó tại đây
Giả sử trong trường hợp của bạn, bạn nên có mã như sau:
$conn = new PDO($connection_string);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // this will force PDO to throw exception when SQL statement fails instead of simply setting an error.
Giả sử điều này sẽ làm việc tốt cho bạn.
Xin lưu ý rằng bạn không nên sử dụng
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
Thay vào đó, bạn nên sử dụng liên kết tham số:
$SqlQuery="INSERT INTO tab_photo VALUES(:PhotoID,:ProjectId,:Day,:barCode,:photoName,:PhotoXml)";
$stmt = $conn->prepare($SqlQuery);
$conn->beginTransaction();
$stmt->execute(array(':PhotoID' => $PhotoID, ':ProjectId' => $ProjectId, ....));
sleep(1);
Xem điều này để biết thêm chi tiết.