Когда имя пользователя вставляется в моей базе данных, таких как:Проверьте имя пользователя существует, если да, то приращение на единицу
- john_smith
мне нужно проверить, есть ли уже john_smith настоящее , Если да, то увеличиваем его на 1, чтобы стать John_Smith_1
Так что, если уже существуют следующие имена:
- john_smith
- John_Smith_1
- John_Smith_2
- John_Smith_3
- .... до John_Smith_10
Мне нужен nex t Добавлен John_Smith для увеличения на John_Smith_11.
До сих пор я искал и придумал это:
$preferredname= "John_Smith"
//check for duplicate user names
$duplicate= check_for_duplicate_username($preferredname);
//if duplicate, increment the preferredname
if ($duplicate)
{
$parts = explode("_",$preferredname);
if (isset($parts[1]))
$preferredname = $parts[0]."_".$parts[1]."_".($parts[2]+1);
else $preferredname = $parts[0]."_".$parts[1]."_1";
}
Это, я считаю, будет работать только для первых соответствия имен пользователей. Моя проблема заключается в проверке базы данных для версии имя с наибольшим числом .. Это мой SQL:
function check_for_duplicate_username($name)
{
// check if username already exists
$sql = "SELECT * FROM users WHERE user_username=$name";
//then return duplicates
У вас проблема с XY.Ваши ddls должны измениться, вы неправильно используете свою базу данных. – gbtimmon
Ненавижу, когда веб-сайты делают это. Просто сообщите пользователю, что это имя принято, и пусть они выбирают другое. – vascowhite
Быстрые мысли. Возможно, вы должны сохранить добавочное значение вместе с пользователем, чтобы вы могли сортировать по этому столбцу. Или, возможно, вы можете добавить идентификатор к имени пользователя, если оно будет принято. Или еще лучше, верните «ошибку», в которой указано имя пользователя, и выберите другое имя. –