【问题标题】:MySQL repeat delete autonomouslyMySQL自动重复删除
【发布时间】: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


【解决方案1】:

解决方案是使用 POST 而不是 GET,正如 cmets 中 @jeroen 所建议的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2012-11-18
    • 2011-01-09
    相关资源
    最近更新 更多