簡體   English   中英

如何防止相同的記錄/兩次 MySQL - PHP

[英]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:

  1. UPSERT 使用 INSERT IGNORE
  2. UPSERT 使用 REPLACE
  3. UPSERT 使用 INSERT 和 ON DUPLICATE KEY UPDATE

或為您的 id 設置PRIMARY KEYUNIQUE Index可以防止重復您的數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM