Я пытаюсь изменить это так, чтобы, если кто-то попытается вставить уже существующую запись с pageID и displayID, он просто проигнорирует INSERT и перезагрузит страницу, фактически не внося никаких изменений.
У меня есть уникальный индекс в столбцах page_id и display_id, но он по-прежнему вставляет здесь дубликаты.
Как я могу исправить это, чтобы правильно не вставлять дубликаты и просто игнорировать запрос на вставку?
$pageID = $_GET['pageID'];
$displayID = $_GET['displayID'];
$assignPage = "
INSERT IGNORE INTO display_to_page(page_id, display_id)
Values( '".$pageID."', '".$displayID."')
";
$performAssign = $mysqlConn->query($assignPage);
header("Location: displayPage.php?displayID = ".$displayID);
exit;
Я только что создал его в верстаке под индексами
Убедитесь, что page_id и display_id составляют составной уникальный индекс






Если у вас есть уникальный индекс для обоих столбцов, то дубликаты не должны вставляться в таблицу.
Это будет выглядеть либо как unique(page_id, display_id) в определении таблицы (или аналогичном ограничении), либо:
create unique index unq_display_to_page_2 on display_to_page(page_id, display_id);
Обратите внимание, что эти ограничения / индексы находятся в таблице display_to_page.
С таким индексом / ограничением в базе данных MySQL не допускает дублирования в таблице.
Вы также должны проверить идентификаторы, передаваемые в строку. Фактически, вам следует перейти к использованию параметров. Возможно, плохие символы каким-то образом попадают в строку запроса.
Можете ли вы поделиться DDL, используемым для создания индекса? Возможно, это неправильно определено?