Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在变量中增加一些字母_Php_Mysql_String - Fatal编程技术网

Php 在变量中增加一些字母

Php 在变量中增加一些字母,php,mysql,string,Php,Mysql,String,我想将这些值作为其引用id存储在数据库中 CD000001 CD000002 CD000003 CD000004 etc 在保存记录之前,我希望检查最后一条记录的引用id,然后为下一条记录添加一个引用id。例如,下一条记录应该是CD000005 我可以获取最后一条记录,即doasubstr($var,2)以摆脱CD部分,以便我可以进行计算。然而,我得到的是CD5。我不想手动注入那些00000,因为当我达到记录10时,将会出现危机。我将获得CD000010而不是CD000010。 请帮助。使用P

我想将这些值作为其引用id存储在数据库中

CD000001
CD000002
CD000003
CD000004
etc
在保存记录之前,我希望检查最后一条记录的引用id,然后为下一条记录添加一个引用id。例如,下一条记录应该是CD000005

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


请帮助。

使用PHP的str_pad函数。例如:

$next_record = 'CD'. str_pad($last_auto_increment_id, 6, "0", STR_PAD_LEFT);

使用PHP的str_pad函数。例如:

$next_record = 'CD'. str_pad($last_auto_increment_id, 6, "0", STR_PAD_LEFT);
考虑以下几点

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)
考虑以下几点

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)

您必须使用Mysql
LPAD()
函数:

SELECT LPAD( '8' , 6, '0');
  --> returns "000008"

您必须使用Mysql
LPAD()
函数:

SELECT LPAD( '8' , 6, '0');
  --> returns "000008"

假设,如果在其中一个变量中有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”

假设,如果变量之一中有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”

使用str_pad PHP函数获取引用id:

SELECT LPAD( '8' , 6, '0');
  --> returns "000008"

$reference_id='CD'。str_pad($reference_id+1),6,“0”,str_pad_左)

使用str\u pad PHP函数获取引用id:

SELECT LPAD( '8' , 6, '0');
  --> returns "000008"

$reference_id='CD'。str_pad($reference_id+1),6,“0”,str_pad_左)

你有没有试过看看如果你这样做会发生什么$myVar++;echo$myVar?但是依靠PHP递增一个值来避免数据库记录中的重复是不好的或无效的。我的建议是取下CD并将其存储在$variable中,让数字完成它们的任务,但是,当您出于显示目的调用它时,您可以简单地将其与引用连接起来,我建议您将主键设置为常规的自动递增整数;然后,如果您手动输入,则为您的业务ID设置一个单独的字段,或者如果您知道您的业务ID始终为“CD”+填充的DB ID,则仅以上述方式对其进行格式设置以供输出。此外,不要“注入”
00000
,请使用正确的格式:
sprintf(“CD%06d”,10)
提供了适当的
“CD000010”
,没有危机。特别是如果你正在编写一个web应用程序(而且你使用的是PHP,很有可能是),你真的不想自己增加你的ID,因为你可以进入一个竞争条件,这将给你的两个对象相同的ID;数据库中的autoincrement字段正是正确的对策,您不应该发明自己的自制解决方案$myVar++;echo$myVar?但是依靠PHP递增一个值来避免数据库记录中的重复是不好的或无效的。我的建议是取下CD并将其存储在$variable中,让数字完成它们的任务,但是,当您出于显示目的调用它时,您可以简单地将其与引用连接起来,我建议您将主键设置为常规的自动递增整数;然后,如果您手动输入,则为您的业务ID设置一个单独的字段,或者如果您知道您的业务ID始终为“CD”+填充的DB ID,则仅以上述方式对其进行格式设置以供输出。此外,不要“注入”
00000
,请使用正确的格式:
sprintf(“CD%06d”,10)
提供了适当的
“CD000010”
,没有危机。特别是如果你正在编写一个web应用程序(而且你使用的是PHP,很有可能是),你真的不想自己增加你的ID,因为你可以进入一个竞争条件,这将给你的两个对象相同的ID;数据库中的autoincrement字段正是正确的对策,您不应该发明自己的自制解决方案。