生成唯一的订单号但不想使用自动递增

时间:2016-04-14 06:40:11

标签: php

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

$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);

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

1 个答案:

答案 0 :(得分:1)

此问题已在此处使用各种方法得到解答,其中一些方法在{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%准备就绪。尝试追加年中的一天,年份的最后2位数,以分钟为单位的当前时间,以秒为单位的当前时间。随机1位数字(根据每日客户群,您可以增加(mt_rand(1,100)))

//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

玩这个想法,让我知道你是否找到了更好的方法。