用一串数字和字母自动增加

时间:2009-12-02 19:42:20

标签: php mysql

现在我正在使用自动增量来识别我网站中的资源。

问题是我不希望用户知道有多少资源。

我怎样才能使用某种结构化的“随机”字母和数字组合(比如6位数字),而不是(或除了)自动递增的主键数字。

基本上我希望用户看到

website.com/page.php?4jnd32

而不是

website.com/page.php?13

我甚至不知道这种做法是什么阻碍了我寻找答案的能力

3 个答案:

答案 0 :(得分:1)

如果你真的想要这个,请创建一个新字段(例如:fake_id),然后使用php的uniqid函数。

答案 1 :(得分:0)

你可以使用GUID,虽然这会比“4jnd32”长得多。 guid是全球唯一标识符。它会唯一地识别页面,但它不会让用户知道有多少页面或给页面排序。

我不是PHP专家,但快速搜索似乎表明php具有生成GUIDs的功能。

答案 2 :(得分:0)

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;