この初心者の質問で申し訳ありません。私は PHP 開発者ではありませんが、今はそれを学ぼうとしています。
MySQL データベースにレコードを追加したいのですが、トランザクション ロックを使用しています。
私のコードは以下の通りです。
$SqlQuery="INSERT INTO tab_photo VALUES('$PhotoID','$ProjectId','$Day','$barCode','$photoName','$PhotoXml')";
$waiting = true;
while($waiting) {
try {
// save border data
$stmt = $conn->prepare($SqlQuery);
$conn->beginTransaction();
$stmt->execute();
sleep(1);
$x=$conn->commit();
echo "x value-".$x;
echo "Success";
$waiting = false;
}
catch (PDOException $e){
echo "Failled :".$PhotoID."-".$PhotoID;
if(stripos($e->getMessage(), 'DATABASE IS LOCKED') !== false) {
// This should be specific to SQLite, sleep for 0.25 seconds
// and try again. We do have to commit the open transaction first though
$conn->commit();
usleep(250000);
} else {
$conn->rollBack();
throw $e;
}
}
}
ここで出力として、
x value-1 Success
しかし実際には、このレコードはデータベースに追加されません。
私の質問:
- コミットも成功しています (出力 1) データベースに追加されないのはなぜですか?
- レコードがデータベースに追加されているかどうかを確認するにはどうすればよいですか? ( write select ステートメントなしでそれを見つける方法はありますか?