Как сделать проверку на одинаковые 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);
→ Ссылка