首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止相同的记录/两次MySQL - PHP

如何防止相同的记录/两次MySQL - PHP
EN

Stack Overflow用户
提问于 2020-02-22 11:55:10
回答 2查看 381关注 0票数 0

我使用第三方支付解决方案在我的应用程序。

会员付款后(3-4秒),第三方支付网站将重定向会员我们的网站。

同时,支付网站向我们的网站发送关于每一笔付款的请求。

如果支付信息请求与重定向用户请求一致,系统将节省两次。为了防止两次录音,我在DB上为每次付款使用了唯一的ID。

代码语言:javascript
复制
$unique_id = $_GET['unique_id'];
## ask the DB this this unique ID exist?
if($exist){
  //update some tables
  //delete the unique id 
}
else{
   //it was done before
}

假设唯一ID asd89279182jkfhff1249879,如果两个相同的请求在同一秒钟到达我们的网站,并且存在唯一的id,则脚本将执行两次。

代码语言:javascript
复制
mywebsite.com/a.php?unique_id=asd89279182jkfhff1249879

我怎样才能防止这种情况下的两次记录?

EN

回答 2

Stack Overflow用户

发布于 2020-02-23 19:08:49

通常您不测试然后插入,只需插入并检查错误,因为您已经在该列上设置了一个UNIQUE constraint

如果尝试将该唯一值插入到表中,则会得到“重复键”类型的错误。实际上不可能用相同的ID添加两个。

您还可以添加一个ON DUPLICATE KEY子句来定义其他行为,比如用新的数据更新记录。

票数 1
EN

Stack Overflow用户

发布于 2020-02-23 20:39:54

您可以将值UPSERT到表中。我们可以通过以下三种方法之一来模仿MySQL UPSERT:

使用INSERT

  1. UPSERT使用INSERT忽略
  2. UPSERT使用替换
  3. UPSERT使用INSERT with重复密钥更新

或者为id设置PRIMARY KEYUNIQUE Index可以防止数据重复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60351910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档