防止重复插入
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.
- 在每次插入之前 - 进行 select 查询并检查
- 使用 NOT EXIST 进行插入查询:
- How to 'insert if not exists' in MySQL?
- MySQL: Insert record if not exists in table
3.Redirect插入后到当前页。
我有一个正在插入的页面。数据库 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.
- 在每次插入之前 - 进行 select 查询并检查
- 使用 NOT EXIST 进行插入查询:
- How to 'insert if not exists' in MySQL?
- MySQL: Insert record if not exists in table
3.Redirect插入后到当前页。