Перейти к содержимому
Русский язык для Invision Community 5

Как записать уникальный идентификатор без auto_increment

Здравствуйте. Интегрируют тут потихоньку пользователей форума с игровым сервером. В базе данных игрового сервера у таблицы с игроками поле id (в моем случае uid) нет автоинкримента, соответственно, обычными способами тут не обойдешься. Скажите, какие варианты есть?

 

				$pvpgn = new \IPS\sharedstats\Records\PvPGNConnection;

			$pvpgn->uid = {вычислить уникальный uid и записать сюда};
			$pvpgn->acct_username = $values['sharedstats_pvpgn_account_add_name'];
			$pvpgn->username = mb_strtolower($values['sharedstats_pvpgn_account_add_name']);
			$pvpgn->acct_passhash1 = \IPS\Helpers\PVPGN\Hash::get_hash(\IPS\Request::i()->$values['sharedstats_pvpgn_account_add_password']);
			$pvpgn->acct_email = '2';
			$pvpgn->acct_userid = '3';

post-60255-0-47907400-1533786572_thumb.png

Рекомендованные сообщения

Как записать уникальный идентификатор без auto_increment
У Вас uid имеет первичный ключ.
  • Автор

Как мне его передать правильно?

Если это данные с какого сервера, то там и нужно смотреть.

  • Автор

Нет, здесь должен быть просто порядковый id как у автоинкримента.

Если поле нигде не используется, то генерируйте значение.

Как вариант использовать текущее время

  • Автор

Блин, вы вообще меня не поняли. Карочи сделал так:

$pvpgn->uid = \IPS\Member::loggedIn()->member_id;

 

Конфликтов не должно быть по идее, так как автоинкремента нет, да и потом можно будет сравнивать пользователей по ID.

Все я понял :)

 

Судя по коду, это форма. И если юзер с ID 5 попытается отправить форму во второй раз, то получит ошибку, т.к. в таблице уже есть запись с uid 5.

  • Автор

Все я понял :)

 

Судя по коду, это форма. И если юзер с ID 5 попытается отправить форму во второй раз, то получит ошибку, т.к. в таблице уже есть запись с uid 5.

 

Ага, только так и должно быть, запрещено одному пользователю регистрировать больше 1 аккаунта )

 

Ну так совсем криво, да?

 

					$uid = $this->db->select('*', 'pvpgn_BNET', null, '`uid` DESC')->first();
				$uid = intval($uid['uid']) + 1;

Изменено пользователем TemKa_SD

Тогда используйте ID юзера, если собираетесь связать столбец с ним.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.