При добавлении элемента в базу данных вы должны назначить ему уникальный ключ.
Numeri c не подходит, поскольку может анализировать просто итерацию по всем продуктам.
Как правильно выполнить уникальный цикл проверки?
, который будет генерировать ключ, пока не будет дубликатов.
uniqid();
генерирует соответствующие ключи, но не гарантирует уникальность значения, поэтому я решил проверить с помощью существующие ключи.
Загрузка столбца с ключами из базы данных
$arrayAllKey = R::getAll('SELECT `category_key` FROM `items` WHERE `id_user` = 104);
Поиск и сравнение каждого элемента массива будет дорогостоящим, если имеется большой объем данных.
Следовательно, наилучшим вариантом является выбор указанного значения c из базы данных.
Неудачно создан код, где:
$ unique - ключ, сгенерированный с использованием uniqid ()
$ arrayAllKey - массив существующих ключей
$ findedKey - выбор ячейки из базы данных с ключом
$ arr [0 ] ["category_key"] - значение найденного ключа $ findedKey
// writing the key that is in the database
$unique = "5e9dfcc637f75";
// Taking the value of the generated key $unique
// If it finds a value, it will output it; if it doesn't, it won't output anything
$findedKey = R::getAll('SELECT `category_key` FROM `items` WHERE `id_user` = ? and `category_key` = ?', [104, $unique]);
// If the value of the found key is present
if ($findedKey[0]["category_key"]) {
// generating a new key
$unique = uniqid();
// selecting the value from the database again
$findedKey = R::getAll('SELECT `category_key` FROM `items` WHERE `id_user` = ? and `category_key` = ?', [104, $unique]);
} else {
// if no duplicates are found, output a unique key
echo $unique;
};