0

構築中のデータベース システムで、非常に厄介な問題が発生しています。説明するのはかなり難しいですが、試してみます。このシステムは、ワークショップの修理を文書化するためのものです。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 分後に行われることもあれば、まったく行われないこともあります。

私は解決のために一生懸命働きましたが、結果はありませんでした。ファイルベースとデータベースベースのログシステムを作成しました。しかし、ログシステムをオンにすると、エラーは魔法のように消えます。

私はこれで迷っています。誰か助けてくれますか?

4

1 に答える 1