需要一个PHP代码,无论何时加载页面(其中有一个表单),它都会生成一个序列号,它也用于表单编号id
答案 0 :(得分:1)
要检查唯一性,您必须将它们存储在数据库表中,每次生成新ID时,请检查它是否已存在。
尝试这样的事情:
<?php
$uni_id = rand(10,99);
$first = $uni_id;
$chars_to_do = 5 - strlen($uni_id);
for ($i = 1; $i <= $chars_to_do; $i++) { $first .= chr(rand(48,57)); }
echo $first;
$chars_to_do = 5 - strlen($uni_id);
for ($i = 1; $i <= $chars_to_do; $i++)
{
if ($i == "2") { $second[] = $uni_id; }
$second[] = chr(rand(48,57));
}
echo "-" . implode("", $second);
$chars_to_do = 5 - strlen($uni_id);
for ($i = 1; $i <= $chars_to_do; $i++)
{
if ($i == "3") { $third[] = $uni_id; }
$third[] = chr(rand(48,57));
}
echo "-" . implode("", $third);
$chars_to_do = 5 - strlen($uni_id);
for ($i = 1; $i <= $chars_to_do; $i++)
{
$fourth[] = chr(rand(48,57));
}
$fourth[] = $uni_id;
echo "-" . implode("", $fourth);
?>
生成不是问题,如何确保唯一性?即使我检查数据库仍然有可能产生重复记录,或者不是吗?
但我认为如果我使用我的代码那么就没有机会......
感谢。
答案 1 :(得分:-1)
您可以使用以下代码生成序列号:
$tokens = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$serial = '';
for ($i = 0; $i < 4; $i++) {
for ($j = 0; $j < 5; $j++) {
$serial .= $tokens[rand(0, 35)];
}
if ($i < 3) {
$serial .= '-';
}
}
echo $serial;
//它将生成序列号,如3GHT-4K5D-35D4-JK53
答案 2 :(得分:-1)
对于相当多的唯一值,请尝试使用UUID(通用唯一标识符)。在PHP中,最好(也是最跨平台)的方法是使用https://github.com/ramsey/UUID。我并不完全清楚你对识别表格的意思,但UUID适用于大多数类型的数据。