Seperti yang saya pahami, Anda berharap bahwa PDOException akan dilempar ketika pernyataan gagal dijalankan. Tapi seperti yang saya lihat, pengecualian tidak dilemparkan secara default dalam kasus seperti itu. Lihat bagaimana Anda dapat mengubahnya di sini
Misalkan dalam kasus Anda, Anda harus memiliki kode seperti ini:
$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.
Misalkan ini akan bekerja dengan baik untuk Anda.
Harap dicatat bahwa Anda tidak boleh menggunakan
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
Alih-alih itu, Anda harus menggunakan pengikatan parameter:
$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);
Lihat ini untuk lebih jelasnya.