// 找到現在的「時間」
$ymdh = date('Y/m/d H');
// 用現在的時間找出訂單目前是有幾筆
$findOrderSoFar = mysqli_fetch_array($pdo->query(
"SELECT count(public_order_id) as num FROM `order_record`
WHERE FROM_UNIXTIME(add_time, '%Y/%m/%d %H') = '{$ymdh}' "
));
// 將 $i 直接加入目前幾筆的數量
$i = $findOrderSoFar['num'];
// 如果找到零比則從一開始
$findOrderSoFar['num'] == 0 ? $i = 1 : $i = $findOrderSoFar['num'];
// 開始迴圈
while ($row = mysqli_fetch_array($sql)) {
// 設定訂單編號長相
$_SESSION['public_order_id'] = substr(date('YmdH', time()), -8).str_pad($i, 4, '0' ,STR_PAD_LEFT);
// ...
$i ++;
}
我目前作法是这样,但是却还是会「重复流水号」
就是不同使用者同时下订时仍然会有这情形发生
我的逻辑已经死了LOL ..
订单编号格式会是:
YYMMDDHH0001
YYMMDDHH0002...
但是到了下一个小时,就会变回YYMMDDHH0001
我贴一个我们生产环境上的生成订单号的代码给楼主看看吧,可以照着这个模式改造下