发生了什么事,用户进入网站,填写了标题,描述,价格等字段的新产品表格...
我想在“ id”列中存储一个生成的唯一字母数字键,该键默认情况下设置为auto_increment,请将该唯一键用作我的product_id。就像每个YouTube视频都有自己生成的唯一密钥一样,而不是像'1','2','3'这样的ID。...
我正在使用"uniqid();"
功能生成该密钥。
如果我做错了,或者有更好的方法,请告诉我。我是一个完整的新秀。
答案 0 :(得分:1)
以下两件事不能同时成立:
您不能使用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。
更新
为了在您的网址中显示字母数字唯一ID,您需要将网址结构从/localhost/product/product_id
更改为/localhost/product/product_unique_id
,我假设您的产品在某处列出了某种超链接,单击哪个将用户带到产品详细信息页面,对吗?
假设您有一个ID为1且唯一ID为lt4Zhr7的产品,因此只需在列出产品的地方,就可以像下面这样给出该产品的唯一ID:
<a href="/localhost/product/lt4Zhr7"> Product 1 </a>
这是一个基本的解决方案,可以指导您正确的方向,根据您使用的框架或其他因素,您的实际代码可能会有所不同。