構築中のデータベース システムで、非常に厄介な問題が発生しています。説明するのはかなり難しいですが、試してみます。このシステムは、ワークショップの修理を文書化するためのものです。PHP、MySQL、Javascript、および Jquery を使用して構築されています。DSM 5.1 を搭載した Synology DS212+ で実行している問題のファイルが 3 つあります。
vr_edit.php
vr_edit_save.php
vr_edit_cancel.php
レポートを開始すると、このファイルは新しいレコードを生成しています:
vr_edit.php?edit=new
$sth = $conn->prepare($sql_str);
$sth->execute($dataArr);
$vrnr = $conn->lastInsertId();
header("Location: ".$goto);
ブラウザを次の場所にリダイレクトします。
vr_edit.php?edit=45000
次に、vr_edit はレコードを読み取り、それを編集するためのフォームを表示します。これは明らかにデータを保存する vr_edit_save に送信されます。
編集フォームでは、レポートをキャンセルする可能性があります。
<button style="width: 165px; margin-top: 8px;" type="button" id="anullerknap" onclick="location.href=('vr_edit_cancel.php?vrnr=46008&setid=46008&cancelReturn=%2FVR3000-TEST%2Findex.php'); return false;"><u>A</u>nullér</button>
vr_edit_cancel.php:
$sql_str = "DELETE FROM `v_rapporter` WHERE vrnr = ".$vrnr." AND status = 'oprettet' LIMIT 1";
$sth = $conn->prepare($sql_str);
$sth->execute();
$sql_str = "ALTER TABLE `v_rapporter` AUTO_INCREMENT = 1;";
$sth = $conn->prepare($sql_str);
$sth->execute();
unset($sth);
unset($sql_str);
unset($conn);
header("Location: ".$goTo);//This points to old location before creating new record
これはすべてうまく機能しますが、問題が発生しました。レポートを削除した後に新しいレポートを作成すると、問題が発生します。削除されたものと同じ ID (vrnr) を取得します。しかし、突然、スクリプトが呼び出されずにレコードが再び削除されます。そして、それは完全にランダムのようです。数秒でそれが行われることもあれば、1 分後に行われることもあれば、まったく行われないこともあります。
私は解決のために一生懸命働きましたが、結果はありませんでした。ファイルベースとデータベースベースのログシステムを作成しました。しかし、ログシステムをオンにすると、エラーは魔法のように消えます。
私はこれで迷っています。誰か助けてくれますか?