Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и проверить их уникальность в базе данных MySQL.
function random_number($length = 6)
{
$arr = array(
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
);
$res = '';
for ($i = 0; $i < $length; $i++) {
$res .= $arr[random_int(0, count($arr) - 1)];
}
return $res;
}
echo random_number();
Примеры сгенерированных строк:
973295
386699
091346
266756
172889
111335
function random_number($length = 6)
{
$arr = array(
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
);
$res = '';
for ($i = 0; $i < $length; $i++) {
$res .= $arr[random_int(0, count($arr) - 1)];
}
return $res;
}
echo random_number();
Примеры сгенерированных строк:
DUWZBK
FWZNFI
REYOZL
EXDKAD
BYMGVY
KLTWOI
function random_number($length = 6)
{
$arr = array(
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
);
$res = '';
for ($i = 0; $i < $length; $i++) {
$res .= $arr[random_int(0, count($arr) - 1)];
}
return $res;
}
echo random_number();
Примеры сгенерированных строк:
2HGZS7
APGUNN
QV1H5P
7VAP01
8QA4KJ
RMC07H
Если сгенерированные коды должны быть уникальные, то перед записью в базу данных нужно сделать проверку с помощью цикла do while:
// Подключение к БД
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
do {
// Генерируем код
$number = random_number();
// Проверяем в БД
$sth = $dbh->prepare("SELECT * FROM `codes` WHERE `value` = ?");
$sth->execute($number);
$is_db = $sth->fetch(PDO::FETCH_ASSOC);
if (!empty($is_db) {
$cont = true;
} else {
$cont = false;
}
} while ($cont === false);
// Сохранение уникального кода
$sth = $dbh->prepare("INSERT INTO `codes` SET `value` = ?");
$sth->execute($number);