使用php在SQL数据库中插入每次新行时生成自定义唯一ID

时间:2018-04-14 10:15:17

标签: php mysql mysqli

我有什么
所以我有一个表格,让我们说3列(实际上它有更多,但是例如),让我们说idnameemail。我有一个网页,用户输入nameemail并在php中使用mysqli将其保存到MySQL数据库中,id由php使用自动增量生成,因此它就像1,2,3 ...等等。
我想要什么
我不希望id只是一个整数,我希望它是字母和数字eg.- B201的组合。我想定义在哪种情况下使用字母表的规则,我可能还想自己定义部分数字,部分部分将自动递增。
让我们说如果用户输入的电子邮件是gmail电子邮件,那么我希望第一个字符是G,如果它的yahoo是Y等eg.- G201,Y201
现在我想要指示月份的第一个和第二个数字,所以如果它的11月那么id应该是G111 每个新条目的最后一位数应自动递增 我看了谷歌寻找帮助但找不到任何好的东西(也许我的谷歌搜索技能很糟糕) 我被困的地方
在php中确定前三个字符非常简单,我可以检查发布给用户的电子邮件字符串并确定第一个字母,对于下一个数字,我可以检查当前日期时间并按当月确定。
真正的问题是最后一部分,即自动增量,我无法弄清楚如何做到这一点。 php脚本在插入新行时如何知道上次插入的值是什么,这样它可以在此时为自动增量值添加+1。
所以,如果有人可以帮助我在php中生成类似的字符串,以便我可以将其保存在数据库中,我将非常感激。

1 个答案:

答案 0 :(得分:1)

好吧,您可以使用mysqli最后一次插入ID:

,而不是自己生成整数
// Note: you must call the mysqli_insert_id()
// function  after the insert query

$generate_id = mysqli_insert_id( $connection );

// Get the first character from the email server
// gmail.com will be: G
// yahoo.com will be: Y
// and so on...
$generate_char = strtoupper( explode( '@', $email_here)[ 1 ][ 0 ] );

// Concatenate the generated values
$unique_id = $generate_char . $generate_id;

就是这样。

请注意,字符串可以作为数组进行操作,例如:

$str = 'gmail.com';

要获得第一个字母:g您可以使用如下数组表示法:

$first_letter = $str[ 0 ];