首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何允许用户根据一定数量的列选择要保留的重复元素(MySQL PHP)

如何允许用户根据一定数量的列选择要保留的重复元素(MySQL PHP)
EN

Stack Overflow用户
提问于 2018-08-31 03:50:19
回答 1查看 0关注 0票数 0

信息

我编写了一个PHP脚本,它接受一个csv文件并将其上传到MySQL数据库。在此脚本中,我根据first_name,last_name,birthdate和phone四列检查重复项。

代码语言:javascript
复制
$duplicateQuery = mysqli_query($conn, "SELECT * FROM students
        WHERE first_name ='$firstName'
          AND last_name ='$lastName'
          AND birthDate = '$dateOfBirth'
          AND phone='$homeNumber'");

如果查询返回0,则它是唯一的,并且元素将插入到数据库中。但是,我要上传的脚本包含许多人为输入错误(在四列之一中)。因此,我有四个其他陈述,每个陈述四个元素中的三个是否相同。

代码语言:javascript
复制
$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中的信息更新为第二个元素。我很难解决这个问题,检查每个查询,然后使用带有表单的弹出窗口,或者是否有更有效的方法来执行此操作。洞察力将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 13:05:22

一个改进的方面可能是使用单个查询来确定是否应插入行或是否应该询问用户。

以下查询将计算作为分数匹配的4列的数量。分数返回匹配的列数,并且仅返回至少3列匹配的行。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档