У меня очень неприятная проблема с системой базы данных, которую я создаю. Трудно объяснить, но я попробую. Система предназначена для документирования ремонта цехов. Он построен с использованием PHP, MySQL, Javascript и JQuery. Запуск на Synology 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 после того, как я удалил один.. Он получает тот же идентификатор (vrnr), что и удаленный, и это прекрасно. Но при этом он удаляет запись снова без вызова сценария. И это похоже на случайное случайное. Иногда это происходит через несколько секунд, иногда через минуту, а иногда и вовсе.
Я много работал для решения, но без результата. Я создал систему журналов, файловую базу и базу данных. Но когда я включаю систему регистрации, ошибка волшебным образом исчезает.
Я потерялся в этом, может ли кто-нибудь мне помочь?
Вы не должны использовать GET-запросы для удаления или изменения данных, всегда используйте POST. Это позволит избежать проблем с браузерами, пытающимися получить ссылки для ускорения просмотра, случайных перезагрузок и т. Д. – jeroen
@jeroen - Спасибо за ваш комментарий. Считаете ли вы, что это именно так? Этого не происходит, если я закрою браузер и снова открою страницу. И он удаляет только те записи, которые были удалены ранее. Поэтому, если это браузер делает это, он делает это только тогда, когда это делалось раньше. –
Это, безусловно, выглядит; это похоже на то, что ваш браузер перезагружает ранее загруженные страницы. – jeroen