[英]How to Prevent Same Record / Twice MySQL - PHP
我在我的應用程序上使用了 3rd 方支付解決方案。
會員付款后(3-4 秒),第 3 方支付網站會將會員重定向到我們的網站。
同時,付款站點會向我們的網站發送有關每次付款的請求。
如果支付信息請求與重定向用戶請求一致,則系統保存兩次。 為防止重復記錄,我在每次付款時在 DB 上使用唯一 ID。
$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 存在,腳本將執行兩次工作。
mywebsite.com/a.php?unique_id=asd89279182jkfhff1249879
在這種情況下如何防止兩次記錄?
通常您不會先測試然后插入,您只需插入並檢查錯誤,因為您已經在該列上設置了UNIQUE
約束。
如果您嘗試插入到已采用該唯一值的表中,您將收到“重復鍵”種類的錯誤。 實際上不可能添加兩個具有相同 ID 的。
您還可以執行一些操作,例如添加ON DUPLICATE KEY
子句來定義其他行為,例如使用新數據更新記錄。
您可以將UPSERT
值添加到您的表中。 我們可以通過以下三種方式之一來模仿 MySQL UPSERT:
或為您的 id 設置PRIMARY KEY
和UNIQUE Index
可以防止重復您的數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.