автоинкремент со строкой цифр и букв - PullRequest
0 голосов
/ 02 декабря 2009

Сейчас я использую автоинкремент для определения ресурсов на моем сайте.

Проблема в том, что я не хочу, чтобы пользователи знали, сколько ресурсов.

Как можно вместо этого использовать какую-то структурированную "случайную" комбинацию букв и цифр (скажем, 6 цифр), которую я мог бы использовать вместо (или в дополнение к) автоматически увеличивающихся чисел первичного ключа.

В основном я хочу, чтобы пользователи видели

website.com/page.php?4jnd32

вместо

website.com/page.php?13

Я даже не знаю, как называется эта практика, которая ограничивает мою способность искать ответ

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Если вы действительно этого хотите, создайте новое поле (например, fake_id), затем используйте функцию php's uniqid .

0 голосов
/ 02 декабря 2009

MySQL поддерживает UUIDs . Но вы захотите использовать триггер, чтобы заставить это работать автоматически.

CREATE TABLE `tester` (
  `tester_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `uuid` VARCHAR(64),
  `foo` VARCHAR(45),
  PRIMARY KEY (`tester_id`),
  INDEX `index_uuid`(`uuid`)
)
ENGINE = InnoDB;

delimiter |
CREATE TRIGGER tester_uuid BEFORE INSERT ON `tester`
FOR EACH ROW BEGIN
  SET NEW.uuid = UUID();
END;
|
delimiter;

INSERT INTO tester (foo) VALUES('bar'), ('baz');

SELECT * FROM tester;
0 голосов
/ 02 декабря 2009

Вы можете использовать GUID, хотя он будет значительно длиннее, чем "4jnd32". Guid - это глобальный уникальный идентификатор. Он бы однозначно определял страницы, но не давал бы пользователю никакого представления о количестве страниц и не упорядочивал страницы.

Я не эксперт по PHP, но быстрый поиск показывает, что в php есть функция для генерации GUID .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...