Php Mysql添加重复数据,尽管控件
我在mysql表中添加数据时遇到问题。我创建了一个简单的时事通讯系统。系统将发送的电子邮件地址添加到任务表中,并在发送前检查其是否已发送。但每次都会添加重复的记录,例如;我的电子邮件列表包含3000条记录,但表中显示6000条记录 这里是我的表结构和查询 订户表Php Mysql添加重复数据,尽管控件,php,mysql,duplicates,Php,Mysql,Duplicates,我在mysql表中添加数据时遇到问题。我创建了一个简单的时事通讯系统。系统将发送的电子邮件地址添加到任务表中,并在发送前检查其是否已发送。但每次都会添加重复的记录,例如;我的电子邮件列表包含3000条记录,但表中显示6000条记录 这里是我的表结构和查询 订户表 ID subscriber_mail -------------------- 1 mail1@gmail.com 2 mail2@gmail.com 3 mail3@gmail.com 4 mail4@gm
ID subscriber_mail
--------------------
1 mail1@gmail.com
2 mail2@gmail.com
3 mail3@gmail.com
4 mail4@gmail.com
ID subscriber_mail CID
---------------------------
1 mail1@gmail.com 1
2 mail2@gmail.com 1
3 mail3@gmail.com 1
4 mail4@gmail.com 1
任务表
ID subscriber_mail
--------------------
1 mail1@gmail.com
2 mail2@gmail.com
3 mail3@gmail.com
4 mail4@gmail.com
ID subscriber_mail CID
---------------------------
1 mail1@gmail.com 1
2 mail2@gmail.com 1
3 mail3@gmail.com 1
4 mail4@gmail.com 1
用户获取和录制
$query = "
SELECT
S.*
FROM
subscribers AS S
LEFT JOIN tasks AS T ON (T.CID=". CAMPAIGN_ID ." AND S.subscriber_mail=T.subscriber_mail)
LEFT JOIN unsubscribes AS U ON (U.CID=". CAMPAIGN_ID ." AND S.subscriber_mail=U.subscriber_mail)
WHERE
(T.subscriber_mail IS NULL)
AND (U.subscriber_mail IS NULL)
";
$opSubs = $myconn->query($query) or die(mysqli_error($myconn));
while($opSubsRs = $opSubs->fetch_assoc()){
-- SMTP connection --
if($mail->Send()){
$myconn->query("INSERT INTO tasks SET
CID=1,
subscriber_mail='". $opSubsRs['subscriber_mail'] ."'
");
}
}
所以,这个系统可以很好地用于我的localhost和namescape,Godaddy,没有重复的记录,但是一些托管服务会在任务表中添加相同的记录。它可能是sql\u模式
或NULL
,二进制
问题?数据库引擎使用MyISAM
问候。当您插入表格时,应检查电子邮件是否已存在 范例
$query = "SELECT email from subscribers";
获取该查询,然后检查之后是否存在电子邮件
if($query->fetch->rowcount < 1){
$query = "Insert into subscribers(email) values (email)"
}
if($query->fetch->rowcount<1){
$query=“插入订阅服务器(电子邮件)值(电子邮件)”
}
您也不应该手动插入id,只需打开自动增量即可。在插入表格时,您应该检查电子邮件是否已经存在 范例
$query = "SELECT email from subscribers";
获取该查询,然后检查之后是否存在电子邮件
if($query->fetch->rowcount < 1){
$query = "Insert into subscribers(email) values (email)"
}
if($query->fetch->rowcount<1){
$query=“插入订阅服务器(电子邮件)值(电子邮件)”
}
您也不应该手动插入id,只需打开自动递增。是的,但是订阅者获取查询只选择未发送的邮件,加入为(t.subscriber\u mail为NULL)。如果我检查此循环中的任务列表,是否会降低系统性能?如果我尝试检查每个循环中有1m条记录的任务表?@GökhanAYVAZ您可以将发送的任务表保存到一个文件中,然后从中加载它吗。这样,性能就不会有问题,而且取决于电子邮件大小,性能也不会有问题。是的,但是订阅者获取查询只选择未发送的邮件,加入为(t.subscriber\u mail为NULL)。如果我检查此循环中的任务列表,是否会降低系统性能?如果我尝试检查每个循环中有1m条记录的任务表?@GökhanAYVAZ您可以将发送的任务表保存到一个文件中,然后从中加载它吗。这样,性能就不会有问题,而且根据电子邮件大小,性能也不会有问题。