【问题标题】:Prevent Duplicate Insert防止重复插入
【发布时间】:2015-08-07 06:29:26
【问题描述】:

我有一个正在插入的页面。 DB 表有一个名为“order”的唯一列,该列在添加新行时自动递增。我正在以这种方式执行插入:

$insert = <<<SQL
INSERT INTO `order` (name, email, team, project, startdate, enddate, comment, server) VALUES (?,?,?,?,?,?,?,?);
SQL;
$instat = $mysqli->prepare($insert);
$bind = mysqli_stmt_bind_param($instat, "ssssssss", $name, $email, $team, $project, $timestart, $timeend, $comment, $code);
$exec = mysqli_stmt_execute($instat);
mysqli_stmt_close($instat);
mysqli_close($mysqli);

我允许数据库处理订单列的自动增量,以便它不能被复制。这工作得很好,但是如果我要在页面上点击刷新,它将在新的唯一订单 ID 上插入另一行具有相同数据的行。如何防止页面刷新时再次插入?

【问题讨论】:

    标签: php mysql mysqli insert


    【解决方案1】:

    保存该行后,将页面重定向到具有相应消息的另一个页面。你的流程会是这样的

      1) $service->saveObject($dataObject);
      2) redirect_to_success page.
    

    【讨论】:

    • 插入后生成的ID如何结转,以便查询并显示在成功页面上?
    • redirect_to_success.php?id=$yourId
    • 谢谢。我正在使用 mysqli_insert_id() 来获取订单 ID 并将其传递给“成功”页面。感谢您的帮助!
    【解决方案2】:
    1. 在每次插入之前 - 进行选择查询和检查
    2. 使用 NOT EXIST 进行插入查询:

    3.插入后重定向到当前页面。

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      相关资源
      最近更新 更多