信息
我编写了一个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中的信息更新为第二个元素。我很难解决这个问题,检查每个查询,然后使用带有表单的弹出窗口,或者是否有更有效的方法来执行此操作。洞察力将非常感激。
发布于 2018-08-31 13:05:22
一个改进的方面可能是使用单个查询来确定是否应插入行或是否应该询问用户。
以下查询将计算作为分数匹配的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
https://stackoverflow.com/questions/-100008838
复制相似问题