防止重复插入

Prevent Duplicate Insert

我有一个正在插入的页面。数据库 table 有一个名为 "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 上插入另一行具有相同数据的行。如何防止在页面刷新时再次插入?

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

  1) $service->saveObject($dataObject);
  2) redirect_to_success page.
  1. 在每次插入之前 - 进行 select 查询并检查
  2. 使用 NOT EXIST 进行插入查询:
    • How to 'insert if not exists' in MySQL?
    • MySQL: Insert record if not exists in table

3.Redirect插入后到当前页。