Jak jsem pochopil, očekáváte, že když se příkaz nepodaří provést, bude vyvolána výjimka PDO. Ale jak vidím, výjimka se ve výchozím nastavení v takových případech nevyvolává. Jak to můžete změnit zde
Předpokládejme, že ve vašem případě byste měli mít kód jako tento:
$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.
Předpokládejme, že to pro vás bude fungovat dobře.
Vezměte prosím na vědomí, že byste neměli používat
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
Místo toho byste měli použít vázání parametrů:
$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);
Viz toto pro více podrobností.