正在生成唯一的订单号,但不希望使用自动递增


Generating unique order number but not want to use auto incremented

如何生成唯一的订单号。我不希望使用数据库自动递增。我正在使用以下代码

$check_oid_from_cart_query = "
    SELECT 
        MAX(CONVERT(orderid, UNSIGNED INTEGER)) AS orderid 
    FROM  tbl_cart_hist 
    WHERE locationid = '$lid' 
    AND   order_type <> '5'";
$check_oid_from_cart_result = dbQuery($check_oid_from_cart_query);

当我使用这个并同时收到两个请求时,我得到的订单号是相同的。

这里已经使用各种方法回答了这个问题,其中一些方法在[http://phpgoogle.blogspot.co.za/2007/08/four-ways-to-generate-unique-id-by-php.html][1]但看到这个问题是3天前提出的,我想你正在寻找一些简单的东西,也许下面的可能会有所帮助?

选项1:使用以微秒表示的时间。microtime()以微秒为单位返回当前Unix时间戳。此函数仅在支持gettimeofday()系统调用的操作系统上可用。

$microseconds = round(microtime(true));
$orderid = $microseconds;
echo $orderid;

选项2:我刚刚提出了这项技术,所以不确定它是否已经100%准备好生产。尝试附加一年中的第几天,最后两位数字,当前时间以分钟为单位,当前时间以秒为单位&随机1位数(根据每天的客户群,您可以增加(mt_rand(1100))

//mt_rand for random digit 
$random = (mt_rand(1,9));
// date('z') gives the day of year i.e today is day 106 of the year 2017
$date = date('zyis'); 
$date .= $random;
$orderid = $date;
echo($orderid); 

输出看起来像1051738225

试试这个想法,如果你找到了更好的方法,请告诉我。