私が理解しているように、ステートメントの実行に失敗するとPDOExceptionがスローされることを期待しています。しかし、私が見ることができるように、そのような場合、デフォルトでは例外はスローされません。そのを変更する方法をご覧ください。
あなたの場合、次のようなコードが必要だとします:
$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.
これでうまくいくとしましょう。
は使用しないでください。
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
その代わりに、パラメータバインディングを使用する必要があります:
$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);
これ を参照してください 詳細については。