php - 订单号根据之前的号码自动创建
问题描述
我想要做的是创建一个自动订单号。所以就像这个订单的日期数所以今天的第一个订单将是今天的
20190719-01
第二个订单将是
20190719-02
等等。
然后明天它需要像20190720-01 20190720-02
等等等等。
我怎样才能做到这一点?最好在 PHP 中
解决方案
通常订单号是连续的,因此可以很容易地从 AUTO INCREMENT 字段中导出。在你的情况下,这并不容易。
您可以首先从数据库中获取今天之前所有订单的最高 AUTO INCREMENT 字段:
SELECT MAX(id) FROM orders WHERE DATE(orderDate) < CURDATE();
让我们称之为 id $offsetId
。如果还没有订单,它应该是零。
然后先将订单信息插入数据库,这样就可以得到该id
订单的。您可以使用$con->insert_id
MySQLi 或PDO 中的lastInsertId()来执行此操作。让我们称之为$orderId
.
以这种方式使用数据库的原因是为了防止两个订单获得相同的订单号。
现在您可以计算今天的订单号:
$orderNumber = date("Ymd") . "-" . sprintf('%02d', $orderId - $offsetId);
您可以按顺序将其存储在数据库中。
您可能应该预计每天有超过 99 个订单...
推荐阅读
- kubernetes - 创建集群所需的资源量 - Openshift v4.2
- android - 图像在 ImageView 中按大小扭曲
- c# - 如何存储表达式
> 在班级领域? - php - Ext.JSON.decode(): You're trying to decode an invalid JSON String 访问/source/index.php/file/upload/时出现问题
- docker - 新容器访问现有容器上的卷
- php - PHP 干扰高级自定义字段?
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 2 中的字节 0xf1:无效的继续字节
- postgresql - Postgres - 使用数组元素的出现次数更新列
- javascript - 通过 fs 模块在 nodejs 中流式传输视频
- javascript - 文本框的键码