Según tengo entendido, espera que se produzca una excepción PDO cuando no se pueda ejecutar la declaración. Pero como puedo ver, la excepción no se lanza de forma predeterminada en tales casos. Vea cómo puede cambiar eso aquí
Supongamos que en su caso debería tener un código como este:
$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.
Supongamos que esto funcionará bien para usted.
Tenga en cuenta que no debe usar
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
En lugar de eso, debe usar el enlace de parámetros:
$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);
Ver esto para más detalles.