我想将记录存储在我的数据库中,并将这些值作为reference_id
CD000001
CD000002
CD000003
CD000004
etc
在保存记录之前,我想检查最后一条记录的reference_id,然后为下一条记录添加一条记录。例如,下一条记录应为 CD000005
我可以获取最后一条记录,执行substr($var, 2);
以摆脱 CD 部分,以便我可以进行计算。然而,我得到的是CD5。我不想手动注入那些00000
,因为当我达到记录10时,就会出现危机。我会得到CD0000010
而不是CD000010.
请帮忙。
答案 0 :(得分:3)
使用PHP的str_pad函数。举个例子:
$next_record = 'CD'. str_pad($last_auto_increment_id, 6, "0", STR_PAD_LEFT);
答案 1 :(得分:1)
考虑以下
mysql> create table test (val varchar(100));
Query OK, 0 rows affected (0.11 sec)
mysql> insert into test values ('CD000001'),('CD000002'),('CD000003'),('CD000004');
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from test ;
+----------+
| val |
+----------+
| CD000001 |
| CD000002 |
| CD000003 |
| CD000004 |
+----------+
4 rows in set (0.00 sec)
现在要获取最后一条记录,您可以使用以下技术
select * from test
order by cast( substring_index(val,'CD',-1) as unsigned) desc limit 1 ;
+----------+
| val |
+----------+
| CD000004 |
+----------+
1 row in set (0.00 sec)
现在,在选择时你可以获得价值 - 'CD'为
mysql> select substring_index(val,'CD',-1) as val
from test order by cast( substring_index(val,'CD',-1) as unsigned) desc limit 1 ;
+--------+
| val |
+--------+
| 000004 |
+--------+
1 row in set (0.00 sec)
答案 2 :(得分:0)
你必须使用Mysql LPAD()
函数:
SELECT LPAD( '8' , 6, '0');
--> returns "000008"
答案 3 :(得分:0)
假设,如果你在其中一个变量中得到了CD000004。说$ var
所以, $ var ='CD000004'; $ with_cd_var = substr($ var,2)+ 1;
$ final_val ='CD'.str_pad($ with_cd_var,6,'0',STR_PAD_LEFT);
$ final_val包含字符串“CD000005”
答案 4 :(得分:0)
使用str_pad PHP函数获取reference_id:
$ reference_id ='CD'。 str_pad(($ reference_id + 1),6,“0”,STR_PAD_LEFT);