2014-01-22 50 views
0

我想让我的UserId字段像这样AB001。如何在varchar中生成自动增量主键

其中AB是任何东西的名称并且是常数,001是自动递增值。

我该如何在PHP和MySql中做到这一点。

+1

你可以在这里找到你的答案:http://stackoverflow.com/questions/17893988/how-to-make-mysql-table-primary-key-auto-increment-with-some-suffix –

+1

我认为你需要去建立一个复合主键,其中多个字段一起构成一个唯一的值。然后,您可以将自动增量字段与名称分开,并且这两个字段将作为主键一起工作。检查http://stackoverflow.com/questions/5835978/how-to-properly-create-composite-primary-keys-mysql – Lab

+0

@AmithRajShetty我如何实现,如果我使用PHP和MySql? – user3220816

回答

0

在PHP中,你可以增加这样的变种:

$var = "AB001"; 

for($i = 0; $i < 10; $i++) { 
    echo $var . "\n"; 
    $var++; 
} 

接下来,你需要将其插入到MySQL的

编辑----

然而,你可能会遇到ID冲突,如果两个进程同时创建相同的ID!

另一个编辑----

你可以做这样的函数,并通过在数据库ID和基本格式是这样的:

$base = "AB000"; 

echo createId($base, 1456); 

function createId($base, $dbId) 
{ 
    for ($i = 0; $i < $dbId; $i++) { 
     $base++; 
    } 
    return $base; 
} 

我希望这是你找什么: )

+0

这真的是有效的PHP吗?你在循环中声明'$ i''但是从来没有使用它'然后你'增加已经被赋值给一个字符串的$ var' ...这是有效的? – DrCopyPaste

+0

'$ i'在循环中用于在每次迭代后检查它是否低于10 – mic

+0

我在注册时向用户提供此UserId。表中的属性是A_I。 – user3220816

0

请看这Fiddle。让我知道你是否需要更多的澄清。

+0

这短短的文字将有更好的评论。不要只将你的答案中的东西链接起来,请在你的答案中加入相关的解释和代码;所以它不依赖于外部资源;) – DrCopyPaste

+0

我不能评论,因为我没有足够的声望(分钟50)来评论一个问题。 –

+0

然后扩大你的答案;)应该没有必要调用链接来理解答案;使用小提琴是好的,但包括你的代码在这里,所以不会依赖于从下次的 – DrCopyPaste