我试图生成自定义订单号。我的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相同的订单号。它没有改变。你能帮帮我吗?提前致谢。
答案 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>