У меня есть столбец SQL, который выглядит так.Как получить следующий открытый номер?
Обратите внимание, как есть номера в 1100-х и 2000-е годы (1101 - 1123 не показывают, но они существуют). Я написал сценарий, чтобы сделать так, чтобы пользователи, подписавшиеся на определенную группу, получили логин, соответствующий этой группе. Итак, если они регистрируются в основной группе, им предоставляется первый доступный логин в 1100-х годах. Если они регистрируются в умеренной группе, то они получают первый доступный логин в 2000-х годах. Скажем, что пользователь AAL2002 удален, следующий человек для присоединения должен принять вход 2002, а не 2007 (чтобы пробелы были автоматически заполнены).
Прямо сейчас у меня есть PHP-скрипт, который пытается просмотреть все и дать им новый, неиспользуемый логин. Проблема в том, что он дублирует некоторые логины. Есть ли другой способ сделать это с PHP и SQL?
Вот мой ужасный, запутанным код, если вы думаете, что может быть исправлено:
$husers = Query::runQuery("SELECT * FROM `users` WHERE `group`=? AND `login` NOT BETWEEN 'AAL1000' AND 'AAL1010'", array($post['group']));
$i = 0;
$f = false;
do
{
$baseid = (substr($users[$i]['login'], 3)) + 1;
if($baseid != substr($users[$i+1]['login'], 3))
{
$checkid = Query::runQuery("SELECT * FROM `users` WHERE `login`=?", array("AAL".$baseid));
if($checkid[0]['login'] != "AAL".$baseid)
{
$f = true;
}
}
$i++;
}
Было бы проще, если бы у вас было число в столбце INTEGER. – Barmar
@Barmar Это часть проблемы. – ChrisRockGM
Ни один из двух ответов не помог мне. – ChrisRockGM