Если существует запись со значениями для 2 столбцов, игнорировать вставку

Я пытаюсь изменить это так, чтобы, если кто-то попытается вставить уже существующую запись с 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;

Можете ли вы поделиться DDL, используемым для создания индекса? Возможно, это неправильно определено?

Mureinik 26.09.2018 18:07

Я только что создал его в верстаке под индексами

Geoff_S 26.09.2018 18:12

Убедитесь, что page_id и display_id составляют составной уникальный индекс

Rinsad Ahmed 26.09.2018 18:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
31
1

Ответы 1

Если у вас есть уникальный индекс для обоих столбцов, то дубликаты не должны вставляться в таблицу.

Это будет выглядеть либо как 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 не допускает дублирования в таблице.

Вы также должны проверить идентификаторы, передаваемые в строку. Фактически, вам следует перейти к использованию параметров. Возможно, плохие символы каким-то образом попадают в строку запроса.

Другие вопросы по теме