Как сделать проверку на одинаковые ID в таблице MYSQL
Имеется таблица products куда записываются через запятую id
Как выполнить правильно проверку, чтобы если id уже существует в products то не предлагаем его больше для записи или же просто перезаписываем
Тобишь чтобы не было такого, что могут быть одинаковые id в таблице
$areasuder = $userdata[$chatId]['products'];
$new = $areasuder.($areasuder=='' ? '' : ',').$id_t;
$sqladd = "UPDATE `kura` SET `products` = '$new' WHERE `kura`.`id` = '$chatId';";
$conn->query($sqladd);
Ответы (1 шт):
Автор решения: Ein
→ Ссылка
В первую очередь всё же стоит заметить, что, как вам указали в прошлом вопросе, такой способ хранения неэффективен
<?php
// Вставляемый id
$id_t = 5;
$areasuder = "1,2,3,3,4"; //$userdata[$chatId]['products'];
// Разделяем по запятой
$areasuder = explode(',', $areasuder);
// Меняем местами индексы и значение из-за чего повторяющиеся значения схлопываются:
// array( array(
// [0] => 1, [1] => 0,
// [1] => 2, => [2] => 1,
// [2] => 3, => [3] => 3,
// [3] => 3, => [4] => 4,
// [4] => 4,
// ) )
$areasuder = array_flip($areasuder);
// Добавляем произвольное значение с нужным индексом
// Если id уже есть, то дублирования не будет
$areasuder[$id_t] = true;
// Соединяем индексы через запятую
$new = implode(',', array_keys($areasuder));
$sqladd = "UPDATE `kura` SET `products` = '$new' WHERE `kura`.`id` = '$chatId';";
echo "$sqladd"; // $conn->query($sqladd);
