增加一个带有一些字母的变量

时间:2015-03-23 08:31:08

标签: php mysql string

我想将记录存储在我的数据库中,并将这些值作为reference_id

CD000001
CD000002
CD000003
CD000004
etc

在保存记录之前,我想检查最后一条记录的reference_id,然后为下一条记录添加一条记录。例如,下一条记录应为 CD000005

我可以获取最后一条记录,执行substr($var, 2);以摆脱 CD 部分,以便我可以进行计算。然而,我得到的是CD5。我不想手动注入那些00000,因为当我达到记录10时,就会出现危机。我会得到CD0000010而不是CD000010.

请帮忙。

5 个答案:

答案 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);