2015-03-31 67 views
0

我在建立一個數據庫系統時遇到了一個非常惱人的問題。這很難解釋,但我會嘗試。 該系統用於記錄修理廠。 它使用PHP,MySQL,Javascript和Jquery構建。 運行在一個羣暉DS212 +與DSM 5.1 我有問題,3個文件:MySQL自動重複刪除

vr_edit.php 
vr_edit_save.php 
vr_edit_cancel.php 

當開始repport該文件生成一個新的記錄:

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顯然保存數據。

在你有posibillty取消報告編輯表單:

<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 

這一切運作良好,但現在的問題踢當我創建一個新的repport我已經刪除了一個之後。它獲得與刪除的相同的id(vrnr),並且很好,它應該是。 但突然它會在沒有任何腳本被調用的情況下再次刪除記錄。它就像是隨機的。有時它會在幾秒鐘內完成,有時會在一分鐘後完成,有時甚至完全沒有。

我一直在努力尋求解決方案,但沒有結果。 我做了一個日誌系統,一個基於文件的和一個基於數據庫的日誌系統。但是當我打開日誌系統時,這個錯誤神奇地消失了。

我迷失在此,任何人都可以幫助我嗎?

+1

您不應該使用GET請求來刪除或修改數據,請始終使用POST。這將避免瀏覽器嘗試獲取鏈接以加快瀏覽速度,意外重新加載等問題。 – jeroen 2015-03-31 08:54:13

+0

@jeroen - 感謝您的評論。你認爲這是什麼造成這種情況?如果關閉瀏覽器並再次打開頁面,則不會發生。它只會刪除之前刪除的記錄標識。所以如果是瀏覽器這樣做的話,它只會在它做完之前做到。 – 2015-03-31 09:40:22

+0

它當然看起來像它;這聽起來像您的瀏覽器正在重新加載以前加載的頁面。 – jeroen 2015-03-31 10:13:23

回答

0

解決方法是使用POST而不是GET作爲評論中建議的@jeroen。