Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 我们如何用字母值自动生成id?_Php_Mysql - Fatal编程技术网

Php 我们如何用字母值自动生成id?

Php 我们如何用字母值自动生成id?,php,mysql,Php,Mysql,我们如何创建一个表,在其中使用带有字母值的autoid,比如Ref00000001?MySQL不支持自动生成此类id。仅支持整数自动增量ID 您可以使用触发器来实现这一点,但如果同时执行多个插入,那么它就不可靠了 最后但并非最不重要的一点是,由于性能原因,应该避免使用主键的字符串列(特别是在InnoDB表中)。在MySQL中使用标准字段简单地生成ID的数字部分,然后在PHP内的输出中简单地添加“Ref”组件可能是一个好主意 作为一点建议,您可能希望创建一个单一的规范函数(“makeRef”或类似

我们如何创建一个表,在其中使用带有字母值的autoid,比如Ref00000001

MySQL不支持自动生成此类id。仅支持整数自动增量ID

您可以使用触发器来实现这一点,但如果同时执行多个插入,那么它就不可靠了


最后但并非最不重要的一点是,由于性能原因,应该避免使用主键的字符串列(特别是在InnoDB表中)。

在MySQL中使用标准字段简单地生成ID的数字部分,然后在PHP内的输出中简单地添加“Ref”组件可能是一个好主意

作为一点建议,您可能希望创建一个单一的规范函数(“makeRef”或类似函数),以便此活动只能通过一个函数执行,因此,如果需要的话,可以方便地在将来进行修改


就MySQL而言,您可能还希望使用ZEROFILL选项将数值填充到某个长度,尽管我个人在上面的“makeRef”中几乎是临时处理这个问题的函数使用PHP函数的STR_PAD_LEFT选项作为PAD_类型参数。

如果其他人将来需要此类函数,则编写此函数。我使用php生成这个值。非常简单:

$q="select reference_number from accounts order by reference_number desc LIMIT 1";
$result = mysql_query($q);
$row = mysql_fetch_assoc($result);

$new_eps=explode('REF',$row['reference_number']); //get existing highest value from DB
$new_eps=$new_eps[1]+1; // increment by one 
$eps_string="REF";
$length = 8 - strlen($new_eps); //I need 8 digits for my REF number
    for($i=0;$i<$length; $i++){
     $eps_string .='0';
    }
    $eps_string =$eps_string.$new_eps;
$q=“按参考编号描述限制1从账户订单中选择参考编号”;
$result=mysql\u查询($q);
$row=mysql\u fetch\u assoc($result);
$new_eps=explode('REF',$row['reference_number'])//从数据库中获取现有的最高值
$new_eps=$new_eps[1]+1;//递增
$eps_string=“REF”;
$length=8-斯特伦(新的eps)//我的参考号需要8位数字

对于($i=0;$iif编号从数组返回的顺序不正确(例如:8,7,6,5,4400400,3,2,1),将“按引用编号说明”部分替换为“按类型说明(替换(引用,'REF','')为无符号)说明”