【发布时间】:2015-06-04 12:56:33
【问题描述】:
我正在构建的数据库系统遇到了一个非常烦人的问题。这很难解释,但我会尝试。 该系统用于记录车间维修。 它使用 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),这很好,它应该是。 但突然它再次删除记录而没有调用任何脚本。它就像是完全随机的。有时它会在几秒钟内完成,有时会在一分钟后完成,有时根本不会。
我一直在努力寻找解决方案,但没有结果。 我做了一个日志系统,一个基于文件的和一个基于数据库的。但是当我打开日志系统时,错误就神奇地消失了。
我迷路了,谁能帮帮我?
【问题讨论】:
-
您不应该使用 GET 请求来删除或修改数据,始终使用 POST。这将避免浏览器试图获取链接以加快浏览速度、意外重新加载等问题。
-
@jeroen - 感谢您的评论。你认为这是造成这种情况的原因吗?如果我关闭浏览器并再次打开页面,则不会发生这种情况。它只删除之前已删除的记录 ID。因此,如果是浏览器这样做,它只会在之前这样做时才这样做。
-
看起来确实像;听起来您的浏览器正在重新加载以前加载的页面。
-
@jeroen 它同时使用 chrome 和 IE。无论如何,你的建议就像一个魅力。非常感谢。
标签: php jquery mysql pdo synology