Следующие две вещи не могут быть истинными одновременно:
- уникальный сгенерированный буквенно-цифровой ключ
- столбец 'id', который по умолчанию имеет значение auto_increment
У вас не может быть буквенно-цифрового ключа, который является 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
в свой столбец и вуаля, у вас есть уникальныйидентификатор сущности.
ОБНОВЛЕНИЕ
Чтобы показать буквенно-цифровой уникальный идентификатор в вашем URL, вам необходимо изменить структуру URL с /localhost/product/product_id
на /localhost/product/product_unique_id
и я предполагаю, что у вас есть где-то ваш продукт с какой-то гиперссылкой, щелкнув по которой вы перейдете на страницу сведений о продукте, верно?
Допустим, у вас есть продукт с идентификатором 1 и уникальным идентификатором lt4Zhr7.так просто, когда вы перечисляете продукты, вы даете уникальный идентификатор продукта, например, так:
<a href="/localhost/product/lt4Zhr7"> Product 1 </a>
Это базовое решение, которое должно направлять вас в правильном направлении, ваш фактический код может отличаться на основев зависимости от используемой вами структуры или другого фактора.