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),並且很好,它應該是。 但突然它會在沒有任何腳本被調用的情況下再次刪除記錄。它就像是隨機的。有時它會在幾秒鐘內完成,有時會在一分鐘後完成,有時甚至完全沒有。
我一直在努力尋求解決方案,但沒有結果。 我做了一個日誌系統,一個基於文件的和一個基於數據庫的日誌系統。但是當我打開日誌系統時,這個錯誤神奇地消失了。
我迷失在此,任何人都可以幫助我嗎?
您不應該使用GET請求來刪除或修改數據,請始終使用POST。這將避免瀏覽器嘗試獲取鏈接以加快瀏覽速度,意外重新加載等問題。 – jeroen 2015-03-31 08:54:13
@jeroen - 感謝您的評論。你認爲這是什麼造成這種情況?如果關閉瀏覽器並再次打開頁面,則不會發生。它只會刪除之前刪除的記錄標識。所以如果是瀏覽器這樣做的話,它只會在它做完之前做到。 – 2015-03-31 09:40:22
它當然看起來像它;這聽起來像您的瀏覽器正在重新加載以前加載的頁面。 – jeroen 2015-03-31 10:13:23