html — как разрешить пользователю выбирать, какой дубликат элемента он хочет сохранить, основываясь на определенном количестве столбцов (MySQL PHP)

Информация

Я написал скрипт php, который принимает файл csv и загружает его в базу данных MySQL. В этом сценарии я проверяю наличие дубликатов на основе четырех столбцов: first_name, last_name, birthdate и phone.

$duplicateQuery = mysqli_query($conn, "SELECT * FROM students
WHERE first_name ='$firstName'
AND last_name ='$lastName'
AND birthDate = '$dateOfBirth'
AND phone='$homeNumber'");

Если запрос возвращает 0, он уникален, и элемент вставляется в базу данных. Тем не менее, скрипт, который я хочу загрузить, содержит много ошибок ввода (в одном из четырех столбцов). Следовательно, у меня есть четыре других утверждения, каждое из которых выбирает, если три из четырех элементов идентичны.

$duplicateQueryCase1 = mysqli_query($conn, "SELECT * FROM students
WHERE first_name ='$firstName' AND last_name ='$lastName'
AND birthDate = '$dateOfBirth'");
$duplicateQueryCase2 = mysqli_query($conn, "SELECT * FROM students
WHERE first_name ='$firstName' AND last_name ='$lastName'
AND phone='$homeNumber'");
$duplicateQueryCase3 = mysqli_query($conn, "SELECT * FROM students
WHERE first_name ='$firstName' AND birthDate = '$dateOfBirth'
AND phone='$homeNumber'");
$duplicateQueryCase4 = mysqli_query($conn, "SELECT * FROM students
WHERE last_name ='$lastName' AND birthDate = '$dateOfBirth'
AND phone='$homeNumber'");

Вопрос

Если это так, я хотел бы открыть всплывающее сообщение для отображения информации о каждом элементе, который затем предлагает пользователю выбрать, какой из элементов он хотел бы сохранить. Я планирую ничего не делать и оставить первый элемент, если они выберут первый вариант, иначе обновлю информацию в MySQL до второго элемента. Я зашла в тупик в своем подходе к этой проблеме, проверяю каждый из запросов, а затем использую всплывающее окно с формами, хороший метод или есть более эффективный способ сделать это. Понимание будет высоко ценится.

1

Решение

Одной из областей улучшения может быть использование одного запроса, чтобы определить, должна ли быть вставлена ​​строка или должен быть задан вопрос о пользователе.

Следующий запрос подсчитает количество 4 столбцов, которые соответствуют как оценка. Счет возвращает количество совпадающих столбцов и только те строки, в которых совпадают не менее 3 столбцов.

SELECT
`id`,
`first_name`,
`last_name`,
`birthdate`,
`phone`,
IF(`first_name` = '$firstName',1,0) +
IF(`last_name` = '$lastName',1,0) +
IF(`birthdate` = '$birthdate',1,0) +
IF(`phone` = '$phone',1,0) as `score`
FROM students
WHERE
IF(`first_name` = '$firstName',1,0) +
IF(`last_name` = '$lastName',1,0) +
IF(`birthdate` = '$birthdate',1,0) +
IF(`phone` = '$phone',1,0) >= 3
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector