订单完成后,我收到了来自我的付款处理方的以下回复
Receipt_ID1, Order_ID1, Data_1
我成功地在MySQL表中以相同的顺序插入这些值。但有时当彼此在1-2秒内执行两个订单时,数据值会以错误的方式插入表中。数据值交换。我得到以下结果
Receipt_ID1, Order_ID1, Data_2
Receipt_ID2, Order_ID2, Data_1
任何人都可以告诉我为什么会这样,我怎样才能确保在正确的收据中插入正确的数据值?
好的,这些是SQL语句的实际序列 -
$new_order_id_query = "SHOW TABLE STATUS LIKE ORDERS";
$new_order_id = $row['Auto_increment'];
这就是我从订单表中获取新订单ID并将其发送到付款处理器的方式。然后我收到响应数组并将其分解并执行一个简单的插入语句,如此
INSERT INTO Receipts Values(ReceiptID, OrderID, Data) Values ($Receipt_ID, $Order_ID, $Data);
希望能更好地解释它!
答案 0 :(得分:0)
当您在表格中插入记录时,您应该使用mysqli_insert_id
或PDO::lastInsertId()
来提取ID。这是100%确保获得为该插入生成的id的唯一方法。