【问题标题】:How do I avoid duplicate Order ID如何避免重复的订单 ID
【发布时间】:2017-05-02 06:19:40
【问题描述】:

如果同时提交,我将面临订单 ID 可能重复的问题。
我可以知道如何完全解决这个问题或避免它发生吗?

下面是我的代码,显示了我如何获取订单 ID 并将其发送到数据库

<?php

                $sqlt = "SELECT ORD_ID FROM tpointgroup WHERE Group_ID = '$tid'";
                $order = mysqli_query($conn , $sqlt);
                $rowcount = mysqli_num_rows($order);
                if ($rowcount == 0)
                    echo "No records found";        
                else 
                {
                    $rowt = mysqli_fetch_assoc($order);
                }
                $ordid = $rowt["ORD_ID"] + 1;
?>

 $ORD_ID = date('ym').str_pad($tkid, 6, '0', STR_PAD_LEFT);

$insert = "insert into cusinfo (ORD_ID) values ('$ORD_ID')";
$insert3 = "UPDATE tpointgroup SET 
    ORD_ID = '$ordid' 
    WHERE Group_ID = $tid ";

我从 tpointgroup 表中获取订单 ID,因为我想知道当前订单 ID 是什么并将其加 1。
当用户单击提交时,订单 ID 将分配给客户并更新当前订单 ID到表 tpointgroup。
但是我的系统出现问题,订单ID重复,如果两个或多个用户同时提交,客户的订单ID将相同。

【问题讨论】:

  • 使用 SELECT DISTINCT ORD_ID FROM tpointgroup WHERE Group_ID = '$tid'
  • 哪个是tpointgroup 表的PRIMARY-KEYtpointgroup 中是否有任何 AUTO-INCREMENT 字段
  • @mith ,是的,它在同一个表中还有另一个自动增量
  • MySql 只允许一个或零个自动增量列。
  • 请如上所述将表定义添加到您的问题中(SHOW CREATE TABLE)

标签: php mysql redundancy


【解决方案1】:

尝试以下操作以生成唯一的订单 ID。

$order_id = time() . mt_rand() . $tid;

【讨论】:

  • 这只是一个肮脏的解决方法,而不是要走的路。最好有运行的订单 ID 号。一些税务机关可能需要无缝订单号。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多