0

注文完了後、支払い処理業者から次の応答が返ってきました

Receipt_ID1, Order_ID1, Data_1

これらの値を同じシーケンスで MySQL テーブルに正常に挿入しました。しかし、互いに 1 ~ 2 秒以内に2 つの注文が実行されると、データ値 が間違った方法でテーブルに挿入されることがあります。データ値交換。次の結果が得られます

Receipt_ID1, Order_ID1, Data_2
Receipt_ID2, Order_ID2, Data_1

なぜこれが起こるのか、正しい領収書に正しいデータ値を確実に挿入するにはどうすればよいですか?

OK、これらは SQL ステートメントの実際のシーケンスです -

$new_order_id_query = "SHOW TABLE STATUS LIKE ORDERS";
$new_order_id = $row['Auto_increment'];

これが、Orders テーブルから新しい注文 ID を取得し、支払い処理業者に送信する方法です。次に、応答配列を受け取り、それを分解して、次のように単純な Insert ステートメントを実行します。

INSERT INTO Receipts Values(ReceiptID, OrderID, Data) Values ($Receipt_ID, $Order_ID, $Data);

それがそれをよりよく説明することを願っています!

4

1 に答える 1

0

テーブルにレコードを挿入するときは、mysqli_insert_idまたはで ID をフェッチする必要がありますPDO::lastInsertId()。これが、その挿入用に生成された ID を 100% 確実に取得する唯一の方法です。

于 2012-10-12T08:13:09.563 に答える