所发生的是一个用户来现场,填写创建一个新的产品形式与标题,描述,价格等领域。
我想在默认设置为auto_increment的'id‘列中存储一个唯一生成的字母数字键,使用该唯一键作为我的product_id。就像每个Youtube视频都有自己生成的唯一键,而不是像'1‘、'2’、‘3’这样的id .
我正在使用"uniqid();" 函数生成密钥。
如果我做错了,请告诉我,或者有更好的方法来做。我是个十足的新手。
发布于 2019-06-24 08:08:08
以下两件事不可能同时发生:
您不能有字母数字键,即auto_increment,因为根据定义,字母数字意味着用字母和数字创建的字符串,而不能自动增加字母表,有意义吗?
因此,我的建议是,将"id“键数字保留为1、2、3等,并在表中再创建一列,将其命名为"unique_id”。你当然可以随便给它取名字。它需要VARCHAR(255)类型。
然后使用以下函数填充该列:
$bytes = 12;
$uniqueId = bin2hex(openssl_random_pseudo_bytes($bytes)); //this will create 24 char alphanumeric string, you can increase or decrease it by changing the $bytes然后把这个$uniqueId放进你的专栏,瞧,你有你唯一的实体id。
更新
为了在url中显示字母数字唯一的id,您需要将url结构从/localhost/product/product_id更改为/localhost/product/product_unique_id,我假设您的产品在某个地方列出了某种超链接,单击哪个用户进入产品详细信息页面,对吗?
假设您有一个具有id 1和唯一id lt4Zhr7的产品,那么简单地列出产品,您就会给出产品的唯一id,如下所示:
<a href="/localhost/product/lt4Zhr7"> Product 1 </a>这是一个基本的解决方案,它应该引导您朝着正确的方向前进,您的实际代码可能会根据您正在使用的框架或其他一些因素而有所不同。
https://stackoverflow.com/questions/56732206
复制相似问题