生成自定义订单号

时间:2014-01-30 20:31:39

标签: php mysql

我试图生成自定义订单号。我的MySQL表是这样的: tblOrder id int(11)AI; ordno varchar(50);

我尝试在php块中使用以下函数作为在记录添加事件之前完成此操作。

{

$sql="select max(substr(ordno,9)) as mx from ord where substr(ordno,7,2)=month(now())  order by mx";
$rs=CustomQuery($sql);
$data=db_fetch_array($rs);
$str="OR-";
$str2=date("Ymd");
$str3=($data["mx"]+1);
$values["ordno"]="$str$str2".str_pad($str3, 5, 0, STR_PAD_LEFT);}

问题是,当我运行此代码时,它总是为所有记录条目提供与OR-2014013000001相同的订单号。它没有改变。你能帮帮我吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为真正的问题是通过解析复合ordno列的方式隐藏的。请记住,SUBSTRING是基于1的,而不是从零开始的索引。

$sql="select max(substring(ordno,12, 5)) as mx from ord where
      substring(ordno, 8, 2)=month(now())  order by mx";

...似乎是正确的解析来获得你想要的值。

最好将订单数据存储在单独的字段中,而不是将含义编码到单个列中。您可能会被这种方式困住,但如果您可以编辑它,为什么不通过抓取结构良好的date订单日期列和int订单序列列来动态计算订单号?< / p>